WebSocket 学习笔记(二)

HTML WebSocket

简介

WebSocket 是一种自然的全双工、双向、单套接字链接。
本质上,WebSocket 和 HTML5 语义及简单化范式融为一体。他消除了复杂的变通方法需求以及延时,而且简化了架构。

为什么需要 WebSocket

1.WebSocket 使实时通讯更有效
2.简洁性
3.可互操作
4.WebSocket 解决了使 HTTP 不适合于实时通讯的主要不足之处。

WS 服务器实现及相关技术

在 WebSocket 协议 和 RFC 6455 规范下有很多不同版本的 ws 服务器实现。
WebSocket 初始握手 (opening handshake ) 都始于一个 HTTP 请求,包含一个特殊的首标——Upgrade,第一次握手时将 HTTP 协议升级到 WebSocket 协议完成,这一工作在相同的底层 TCP 连接上进行,我们来看一下 WebSocket 在建立连接时的请求和响应
Request:

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

Response:

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

请求中会会包含一个 Upgrade 的首标和一个 base64 编码的 Sec-WebSocket-Key 解码后是 16 字节长度,这个 key 用于创建服务器握手,服务端需要将此值已字符串的形式拼接为全局唯一( GUID ) 字符串进行 SHA-1 (160位) 编码后再进行 base64 编码作为服务器握手返回 Accept。
细则参照 RFC 6455 规范

例如:Apache 的 ::mod_pywebsocket 、Jetty、Socket.IO::
kaazing 的 ::WebSocket GateWay:: ……

相关技术

  • SSE ( Server-Send Event )
  • SPDY ( Google Inc. )
  • WebRTC ( Web Real-Time Comm-unication ) 实时协作
  • RFB ( Remote Framebuffer ) over WebSocket 通过 WebSocket 启用屏幕共享
  • XMPP、 STOMP、 JMS 等由于构建聊天室、多人在线游戏

参考书籍

《HTML5 WebSocket 权威指南》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章