WebSocket
Websocket是一个持久化的协议
WebSocket 机制
WebSocket 是 HTML5 下一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的。它与 HTTP 一样通过已建立的 TCP 连接来传输数据,但是它和HTTP最大不同是:
WebSocket 是一种双向通信协议。在建立连接后,WebSocket 服务器端和客户端都能主动向对方发送或接收数据,就像 Socket 一样;
WebSocket 需要像 TCP 一样,先建立连接,连接成功后才能相互通信
相比 HTTP 长连接,WebSocket 有以下特点:
无跨域问题。
支持双向通信,实时性更强;
可以发送文本,也可以二进制文件
协议标识符是
ws
,加密后是wss
HTTP长连接中,每次数据交换除了真正的数据部分外,服务器和客户端还要大量交换
HTTP header
。
Websocket 协议通过第一个 request
建立了 TCP 连接之后,之后交换的数据都不需要发送 HTTP header
就能交换数据
支持扩展。
ws
协议定义了扩展,用户可以扩展协议,或者实现自定义的子协议。(比如支持自定义压缩算法等)不同的URL可以复用同一个 WebSocket 连接等功能。这些都是HTTP长连接不能做到的。
WebSocket的API
使用构造函数 new WebSocket("ws://localhost:3001")
建立 WebSocket 连接, 并返回一个 WebSocket 对象
WebSocket 对象包含以下属性:
onclose
:用于指定连接关闭后的回调函数onerror
: 用于指定连接失败后的回调函数onmessage
: 用于指定当从服务器接受到信息时的回调函数onopen
: 用于指定连接成功后的回调函数readyState
(只读) : 当前的链接状态url
(只读): WebSocket 的绝对路径bufferedAmount
(只读): 未发送至服务器的字节数protocol
(只读) : 服务器选择的下属协议
WebSocket 对象包含以下方法:
close
: 关闭当前链接
send
: 向服务器发送数据
示例
node 实例 websocket
服务的模块:ws
见 demo