WebSocket

时间:2014-05-10 01:13:24   收藏:0   阅读:302

原创地址:http://www.cnblogs.com/bnbqian/p/3708119.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.

WebSocket,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!