websocket学习

99 阅读2分钟

简介

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。 其他特点包括:

(1)建立在 TCP 协议之上,服务器端的实现比较容易。

(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

(3)数据格式比较轻量,性能开销小,通信高效。

(4)可以发送文本,也可以发送二进制数据。

(5)没有同源限制,客户端可以与任意服务器通信。

(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

客户端的简单示例

var ws = new WebSocket("wss://echo.websocket.org");

ws.onopen = function(evt) { console.log("Connection open ..."); ws.send("Hello WebSockets!"); };

ws.onmessage = function(evt) { console.log( "Received Message: " + evt.data); ws.close(); };

ws.onclose = function(evt) { console.log("Connection closed."); };

客户端的 API

3.1 WebSocket 构造函数 WebSocket 对象作为一个构造函数,用于新建 WebSocket 实例。

var ws = new WebSocket('ws://localhost:8080');

执行上面语句之后,客户端就会与服务器进行连接。

3.2 webSocket.readyState readyState属性返回实例对象的当前状态,共有四种。

CONNECTING:值为0,表示正在连接。 OPEN:值为1,表示连接成功,可以通信了。 CLOSING:值为2,表示连接正在关闭。 CLOSED:值为3,表示连接已经关闭,或者打开连接失败。

3.3 WebSocket实例的事件: ws.onopen = function () {} // 指定连接成功后的回调函数 ws.onclose = function () {} // 指定连接关闭后的回调函数 ws.onmessage = function () {} // 指定收到服务器数据后的回调函数 ws.onerror = function () {} // 指定报错时的回调函数 3.4 WebSocket实例向后台推送消息的方法: ws.send(message)