一步一步学WebSocket (一) 初识WebSocket.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一步一步学WebSocket (一) 初识WebSocket.doc

  众所周知,Http协议是无状态的,并且是基于Request/Response的方式与服务器进行交互,也就是我们常说的单工模式。但是随着互联网的发展,浏览器与服务端进行双向通信需求的增加,长轮询向服务器以获取最新数据并实现推送效果的方式已经越来越不能满足我们。Html5标准的制定,也为我们提供了浏览器与服务端的双工通信协议WebSocket。   WebSocket协议的格式为 ws://IP:Port 或者“wss://IP:Port。其中wss表示进行加密传输的websocket协议。   WebSocket协议与传统的Socket协议一样,都需要进行“握手”。但是WebSocket的“握手”阶段是通过Http协议进行的,“握手”行为通过Request/Response的Header完成,只需要交换很少的数据,便可以创建基于TCP/IP协议的双工通道。下面我们来看一下Fiddler截取到的WebSocket握手请求      通过Fiddler我们可以看到,在握手请求时,客户端向服务端发送了一个Get请求,并且在请求的头中增加了这么几个Key   Origin:http://IP:Port 表示客户端的地址   Connection:Upgrade /?Upgrade:WebSocket 表示本次请求是要进行WebSocket的握手动作   Sec-WebSocket-Version: 13 表示浏览器支持的WebSocket版本信息      Sec-WebSocket-Key:???? 这是一个由客户端随机生成的字符串      在服务器响应的握手信息中Sec-WebSocket-Accept:的值为服务器通过客户端Header的Sec-WebSocket-Key的值进行计算并加密的结果。      并且服务器的响应状态为101? 表示服务器端已经理解了客户端的需求,并且客户端需要根据Upgrade中的协议类型,切换为新的协议来完成后续的通信。 ?   这时候我们的TCP/IP双工通道就已经建立了,WebSocket协议就这么简单。 ?   说完理论知识了,我们来看如何在浏览器中使用WebSocket协议。         最新的FireFox、Chrome、IE10及以上版本都已经支持了WebSocket协议。但是在使用它时,我们需要先检测浏览器是否支持WebSocket协议   WebSocket对象位于 window对象下。我们可以通过以下代码检测浏览器对WebSocket的支持       if(WebSocket in window) if(window.WebSocket) if(MozWebSocket in window) if(window.MozWebSocket) View Code      如果我们的浏览器支持WebSocket 那么我们就可以创建WebSocket的实例了。    var ws=new WebSocket(ws://localhost:2012); var ws=new MozWebSocket(ws://localhost:2012); View Code         这里需要注意一下,当我们创建WebSocket的实例时,这个WebSocket实例就已经开始向服务器发起握手请求了,不需要我们手动打开连接。   WebSocket对象也很简单,我们会常用到它的4个回调方法 onopen onclose onerror onmessage。他们触发的实际分别为 握手完成并创建TCP/IP通道后,断开连接后,发生错误时,接收到服务端消息时。   另外我们还常常用到一个属性 readyState 用以检查连接状态,和一个函数 send() 向服务端发送数据。      下面我们来完成一个完整的浏览器使用WebSocket的例子,这里需要服务端也支持WebSocket协议          !DOCTYPE html html xmlns=/1999/xhtml head meta http-equiv=Content-Type content=text/html; charset=utf-8 / titleWebSocket示例/title script type=text/javascript var ws;//WebSocket对象 var wsUrl = ws://localhost:2012;//支持WebSocket协议的服务器端地址 function connection() { //判断该使用哪种WebSocket对象 if (We

文档评论(0)

eorihgvj512 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档