websocket通信
2017-03-01 20:27:39 0 举报
WebSocket通信是一种在单个TCP连接上进行全双工通信的协议。它使得数据可以双向流动,服务器可以在任何时候将数据推送到客户端。这种通信方式非常适合实时应用,如在线聊天、实时游戏等。WebSocket通信基于HTTP协议,因此可以通过普通的HTTP服务器实现。与HTTP请求/响应模型不同,WebSocket连接一旦建立,就会保持连接状态,直到客户端或服务器主动关闭连接。这使得WebSocket通信更加高效,因为它避免了频繁建立和关闭连接所带来的开销。总之,WebSocket通信是一种高效、实时的通信方式,适用于需要实时数据传输的应用。
作者其他创作
大纲/内容
通信
发回客户端数据
长度
固定8位
*
???? ????
用websocket传输帧格式
=2^64-1
服务器端
258EAFA5-E914-47DA-95CA-C5AB0DC85B11
客户端
Sec-WebSocket-Protocol: chat
异或
兄弟数据…
连接完成
服务器端-客户端
随机产生,每次都不一样
客户端 - 服务器端
=125
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Host: server.example.com
拼接固定字符串
1000 0001
客户端(js)
send(data)
接收信息
1111 1111
……
=65535
以\\\\作为结尾标志
就是TCP连接
一大坨数据
信息封装
双方在一个全双工的状态下相互通信
数据长度
GET / HTTP/1.1
客户端-服务器
websocket协议
Origin: http://example.com
持久的通道下进行通信
else
真实数据
建立连接
Upgrade: websocket
Sec-WebSocket-Version: 13
必须是有效的http request 格式;
1??? ????
一堆异或等操作
HTTP/1.1 101 Switching Protocols
receive(data)
解析客户端数据
BASE-64编码
发送信息
4字节 (32位)
1111 1110
每行以\\结尾
握手
握手阶段通过http协议
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
mark码
浏览器的询问
创建 WebSocket对象
服务器的push
原始数据
SHA-1加密
onmessage(data)
HTTP request method 必须是GET,协议应不小于1.1 如: Get / HTTP/1.1;
服务器(python)
最高封装角度
Upgrade: websocket
0 条评论
下一页