WebSocket

原创地址: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,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。