go的的websocket实现原理与用法详解实现原理与用法详解
本文实例讲述了go的websocket实现原理与用法。分享给大家供大家参考,具体如下:
websocket分为握手和数据传输阶段,即进行了HTTP握手 + 双工的TCP连接
RFC协议文档在:http://tools.ietf.org/html/rfc6455
握手阶段握手阶段
握手阶段就是普通的HTTP
客户端发送消息:
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: http://example.com
Sec-WebSocket-Version: 13
服务端返回消息:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
这里的Sec-WebSocket-Accept的计算方法是:
base64(hsa1(sec-websocket-key + 258EAFA5-E914-47DA-95CA-C5AB0DC85B11))
如果这个Sec-WebSocket-Accept计算错误浏览器会提示:
Sec-WebSocket-Accept dismatch
如果返回成功,Websocket就会回调onopen事件
数据传输数据传输
websocket的数据传输使用的协议是:
参数的具体说明在这:参数的具体说明在这:
评论0
最新资源