WebSocket初次见

1、轮询:指浏览器每隔一段时间向服务器发送HTTP请求,然后服务器返回最新的数据给客户端。缺点是浏览器需要不断的向服务器发送请求,然而HTTP请求与回复可能会包含较长的头部,其中真正有效的数据可能就一小部分,所以这样会消耗非常多带宽资源。

比较新的轮询技术是Comet,这种技术虽然可以实现双向通信,但仍须反复发出请求,而且在Comet采用的HTTP长连接也会消耗服务器资源。

var xhr = new XMLHttpRequest();

setInterval(function(){
  xhr.open('GET','/user');
  xhr.onreadystatechange = function(){
    
    };
  xhr.send();
},1000)

2、从通信的双方信息交互的方式来看,可以有以下基本方式:

1)单向通信:又称为单工通信,即只能有一个方向的通信而没有反方向的交互。无线电广播或有线电广播以及电视广播就属于这种类型。

2)半双工通信:是指数据可以沿两个方向传送,但同一时刻一个信道只允许单方向传送,因此义被称为双向交替通信,如对讲机就是一种半双工设备,在同一时间内只允许一方讲话。 

3)全双工通信:是指同时发生在两个方向上的一种数据传输方式电话机就是一种全双工设备,其通话双方可以同时进行对话。计算机之间的高速数据通信也是这种方式。

3、ISO七层模型:物理层、数据链路层网络层传输层、会话层、表示层、应用层。

4、HTTP协议:通信只能由客户端发起,做不到服务器主动向客户端推送信息。当服务器发生变化时,只能采用轮询的方式:每隔一段时间就发出一个询问,了解服务器有没有最新的消息。

5、WebSocket是一种网络传输协议,可以进行全双工通信,位于ISO模型的应用层,建立在 TCP 协议之上。所有浏览器都已经支持了。最大的特点是:服务器可以主动向客户端推送消息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。用来取代轮询技术。

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

6、WebSocket客户端实例

let ws = new WebSocket(url[,protocols]); //创建一个WebSocket对象

ws.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;
}
//onopen属性
ws.onopen = function(evt){
    console.log("打开连接时要调用的事件监听器");
    //send方法:发送你要传输的数据
    ws.send("data");
}

//发生错误时要调用的事件监听器
ws.onerror = function(evt){}

//从服务器接收到消息时要调用的事件监听器
ws.onmessage = function(event){
    let data = event.data;
    // 处理数据
}

//连接关闭时要调用的事件监听器
ws.onclose = function(){
    var code = event.code;
    var reason = event.reason;
    var wasClean = event.wasClean;
    // handle close event
}

//关闭连接
ws.close([code[,reason]])

WebSocket 教程 - 阮一峰的网络日志

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值