WebSocket API

HTML5 WebSocket是HTML5中最强大的通信功能,定义了一个全双工通信信道,仅通过Web上的一个Socket即可进行通信;是对常规HTTP通信的另一种增量加强。

(一)实时和HTTP:

WebSocket之前实现都是通过传统的Comet和Ajax轮询、长轮询以及流解决的。

1、使用Comet技术可以让服务器主动以异步方式向客户端推送信息,会使针对传输信息到客户端的响应延迟完成。

2、使用轮询,浏览器会定时发送HTTP请求,并随即接收响应。如果知道消息传递准确时间间隔,轮询是一个很好的方法,但是不可测的请求会有很多无用的打开和关闭。

3、使用长轮询,浏览器想服务器发送请求,服务器会在一段时间内保持打开状态,期间服务器收到通知,会向客户端发送包含消息的响应,如果长时间没有通知,就会发送响应消息终止打开请求。当请求量大时,和传统轮询方式无异。

4、使用流解决方案,浏览器向服务端发送一个请求,服务器会发送并保持处于打开状态的响应,响应持续更新并无限期处于打开状态,有消息相应会被更新,但服务器永远不会发出响应完成的信号,就会一直处于打开状态。因为流任是封装在HTTP中,防火墙和代理服务器可能会对响应进行缓冲,造成消息延迟,当检测到缓冲代理服务器时,流解决会退回长轮询方式,此外可以用TLS(SSL)连接保护响应不被响应,但此情况下每个连接的创建和清除会消耗更多服务器资源。

综上所述,所有提供实时数据方式都涉及HTTP请求和响应报头,包含大量额外数据,会造成传输延迟。最重要是全双工连接还需要客户端到服务端的上行连接,在半双工HTTP上模拟,目前大多数都是使用两个连接:一个下行数据流,一个上行数据流,会造成大量资源耗费并增加复杂度。

(二)WebSocket的出现:

WebSocket是Web应用程序的传输协议,类似TCP,提供了双向的,按序列到达的数据流,和TCP协议一样,高层协议能在WebSocket上运行,WebSocket连接的是URL,而非因特网上的主机地址和端口。

(三)使用WebSockets API

1、浏览器支持情况监测:

    if(window.WebSocket)    //返回true为支持WebSocket

2、基本用法:

创建WebSocket实例,并提供连接的url。ws://和wws://分别表示WebSocket连接和安全的WebSocket连接。

    var url="ws://localhost:8080/server" ;

    var w = new WebSocket(url) ;

建立WebSocket连接时,可以传入指定的通信协议

    var w = new WebSocket(url, ["proto1","proto2"]) ;

2、添加事件监听:

WebSocket遵循异步编程模型,打开socket,只需要监听事件等待回调函数,不需要服务器轮询。

WebSocket对象三个事件:open(打开)、close(关闭)和message(接收到消息)。

    w.onopen = function() { } ;

    w.onmessage = function() { } ;

    w.onclose = function() { } ;

3、发送消息:

socket处于打开状态,可以调用send方法发送消息,完成后可以调用close()关闭或者保持连接。

    w.send(data) ;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值