We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WebSocket,是一种网络传输协议,位于OSI模型的应用层。可在单个TCP连接上进行全双工通信,能更好的节省服务器资源和带宽并达到实时通迅
OSI
TCP
客户端和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输
从上图可见,websocket服务器与客户端通过握手连接,连接成功后,两者都能主动的向对方发送或接受数据
websocket
而在websocket出现之前,开发实时web应用的方式为轮询
web
不停地向服务器发送 HTTP 请求,问有没有数据,有数据的话服务器就用响应报文回应。如果轮询的频率比较高,那么就可以近似地实现“实时通信”的效果
轮询的缺点也很明显,反复发送无效查询请求耗费了大量的带宽和 CPU 资源
CPU
通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合
例如指 A→B 的同时 B→A ,是瞬时同步的
采用了二进制帧结构,语法、语义与 HTTP 完全不兼容,相比http/2,WebSocket 更侧重于“实时通信”,而HTTP/2 更侧重于提高传输效率,所以两者的帧结构也有很大的区别
http/2
WebSocket
HTTP/2
不像 HTTP/2 那样定义流,也就不存在多路复用、优先级等特性
自身就是全双工,也不需要服务器推送
引入ws和wss分别代表明文和密文的websocket协议,且默认端口使用80或443,几乎与http一致
ws
wss
http
ws://www.chrono.com ws://www.chrono.com:8080/srv wss://www.chrono.com:445/im?user_id=xxx
WebSocket 也要有一个握手过程,然后才能正式收发数据
客户端发送数据格式如下:
GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Origin: http://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13
服务端返回的数据格式:
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=Sec-WebSocket-Protocol: chat
基于websocket的事实通信的特点,其存在的应用场景大概有:
The text was updated successfully, but these errors were encountered:
实时通迅
typo
Sorry, something went wrong.
No branches or pull requests
一、是什么
WebSocket,是一种网络传输协议,位于
OSI
模型的应用层。可在单个TCP
连接上进行全双工通信,能更好的节省服务器资源和带宽并达到实时通迅客户端和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输
从上图可见,
websocket
服务器与客户端通过握手连接,连接成功后,两者都能主动的向对方发送或接受数据而在
websocket
出现之前,开发实时web
应用的方式为轮询不停地向服务器发送 HTTP 请求,问有没有数据,有数据的话服务器就用响应报文回应。如果轮询的频率比较高,那么就可以近似地实现“实时通信”的效果
轮询的缺点也很明显,反复发送无效查询请求耗费了大量的带宽和
CPU
资源二、特点
全双工
通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合
例如指 A→B 的同时 B→A ,是瞬时同步的
二进制帧
采用了二进制帧结构,语法、语义与 HTTP 完全不兼容,相比
http/2
,WebSocket
更侧重于“实时通信”,而HTTP/2
更侧重于提高传输效率,所以两者的帧结构也有很大的区别不像
HTTP/2
那样定义流,也就不存在多路复用、优先级等特性自身就是全双工,也不需要服务器推送
协议名
引入
ws
和wss
分别代表明文和密文的websocket
协议,且默认端口使用80或443,几乎与http
一致握手
WebSocket
也要有一个握手过程,然后才能正式收发数据客户端发送数据格式如下:
服务端返回的数据格式:
优点
二、应用场景
基于
websocket
的事实通信的特点,其存在的应用场景大概有:参考文献
The text was updated successfully, but these errors were encountered: