websocket介绍

1、什么是websocket

WebSocket是HTML5的一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。所谓的全双工通信即服务端和客户端能够互相发送消息。

2、为什么要使用websocket

浏览器和服务器通信的历史:
  • http1.0:
  • http1.1:使用持续连接、流水线方式

    在浏览器中通过http仅能实现单向的通信。当服务器端数据发生变化时,客户端如何即时得到通知呢?

  • 模拟“服务端推”技术

    • 轮询:客户端向服务器发送请求,查看是否有可用的新信息,请求以固定的时间间隔发出,不管是否有信息,客户端都会得到响应。

    • 长轮询:客户端向服务器请求信息,并在设定的时间段内打开一个连接。服务器如果没有任何信息,会保持请求打开,直到有客户端可用的信息,或者直到指定的超时时间用完为止。这时,客户端重新向服务器请求信息。

  • 真正的“服务端推”:websocket

    这里写图片描述

3、websocket连接是如何建立的

三次握手后进行一次http握手,以升级到websocket协议,之后按websocket的方式传送数据。

每个WebSocket连接都始于一个HTTP请求。该请求和其他请求很相似,但是包含一个特殊的首标—Upgrade。Upgrade首标表示客户端将把连接升级到不同的协议。

这里写图片描述

sec-websocket-accept与sec-websocket-key:
sec-websocket-accept=base64(hsa1(sec-websocket-key+258EAFA5-E914-47DA-95CA-C5AB0DC85B11))

如果返回的sec-websocket-accept不对,在chrome下会出现Sec-WebSocket-Accept dismatch的错误。

这里写图片描述

Response返回的HTTP Staus是101,代表服务端说“我们双方后面就按照websocket协议来进行数据传输吧”。

4、如何使用websocket

var ws = new WebSocket(“ws://echo.websocket.org”); 
ws.onopen = function(){
    console.log(“open!”);
    ws.send(“Test!”);
}; 
ws.onmessage = function(evt){
    console.log(evt.data);
    ws.close();
}; 
ws.onclose = function(evt){
    console.log(“closed!”);
}; 
ws.onerror = function(evt){
    console.log(“error!”);
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值