WebSocket

来源:互联网 发布:淘宝土特产店铺简介 编辑:程序博客网 时间:2024/06/02 07:29

1.WebSocket 的特点

  WebSocket 是 HTML5 一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯,它建立在 TCP 之上,同 HTTP 一样通过 TCP 来传输数据,但是它和 HTTP 最大不同是:
  WebSocket 是一种双向通信协议,在建立连接后,WebSocket 服务器和 Browser/Client Agent 都能主动的向对方发送或接收数据,就像 Socket 一样;
  WebSocket 需要类似 TCP 的客户端和服务器端通过握手连接,连接成功后才能相互通信。
  传统的http每次请求都是需要客户端与服务端建立连接模式,WebSocket 是类似 Socket 的 TCP 长连接的通讯模式,一旦 WebSocket 连接建立后,后续数据都以帧序列的形式传输。在海量并发及客户端与服务器交互负载流量大的情况下,极大的节省了网络带宽资源的消耗,有明显的性能优势,且客户端发送和接受消息是在同一个持久连接上发起,实时性优势明显。

http协议只能有客户端发起,状态需要等到服务器返回才能操作。WebSocket可以数据双向发送,服务器端和客户端可以同时向对方发送数据。
(1)建立在 TCP 协议之上,服务器端的实现比较容易。
(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
(3)数据格式比较轻量,性能开销小,通信高效。
(4)可以发送文本,也可以发送二进制数据。
(5)没有同源限制,客户端可以与任意服务器通信,完全可以取代 Ajax。

(6)协议标识符是ws(如果加密,则为wss,对应 HTTPS 协议),服务器网址就是 URL。 ws://example.com:80/some/path

2.示例
浏览器对 WebSocket 协议的处理
1.建立连接和断开连接
2.发送数据和接收数据
3.处理错误

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.');};
3.webSocket.readyState


readyState属性返回实例对象的当前状态,共有四种。
CONNECTING:值为0,表示正在连接。
OPEN:值为1,表示连接成功,可以通信了。
CLOSING:值为2,表示连接正在关闭。
CLOSED:值为3,表示连接已经关闭,或者打开连接失败。


//示例switch (ws.readyState) {  case WebSocket.CONNECTING:    // do something    break;  case WebSocket.OPEN:    // do something    break;  case WebSocket.CLOSING:    // do something    break;  case WebSocket.CLOSED:    // do something    break;  default:    // this never happens    break;}


原创粉丝点击