您的位置:首页 > 其它

WebSocket

2014-05-04 23:06 169 查看
原创地址:/article/5259541.html

转载请注明出处

 

作为初学者,知道WebSocket 可以实现Web 的双向通讯就足够了。

想要知其然,知其所以然,就必须去看看相应的协议规定。因为WebSocket 是个比较新的概念,可以看到有从00 到17 到RFC 6455 的版本。http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00 最新的目前是RFC 6455 的版本。http://tools.ietf.org/html/rfc6455

虽然说英文是必须的,但是作为快速入门的材料,有中文版本自然是极好的。这里是中文版的文档翻译地址。https://github.com/wen866595/open-doc/blob/master/rfc/RFC6455-cn.md

请求如下所示:

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


---------------------------------------------------------------------------------------------------------------------------

服务器端处理过程:

请求头:
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==


取值,字符串拼接后得到:
"dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
;

SHA-1
后得到:
0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea


Base64
后得到:
s3pPLMBiTxaQ9kYGzzhZRbK+xOo=


最后的结果值作为响应头
Sec-WebSocket-Accept
的值。

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=


---------------------------------------------------------------------------------------------------------------------------

258EAFA5-E914-47DA-95CA-C5AB0DC85B11 是一个神奇的GUID.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: