LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

WebSocket:让Web更实时、更快速高效

admin
2012年6月15日 8:29 本文热度 3735

 

   WebSocket协议可以实现浏览器与服务器之间的双向实时通讯,帮助在浏览器中运行的App实现像传统桌面程序一样强大、即时的功能和体验。

    聊天、读新闻、查股票行情、玩游戏……我们总是希望在浏览器中可以直接运行各种应用程序、完成各种复杂的任务,而不必添加额外的浏览器插件。这就需要Web应用程序能够实时运行,但传统的互联网协议架构并不是为现在的富互联网应用(RIA)设计的,因此开发者需要使用老架构实现新功能,这时难免会遇到许多问题。现代Web应用需要革新传统C/S(客户端/服务器)模式通讯的协议架构——从单向的HTTP问答模式升级到双向的实时通讯模式。国际标准化组织W3C和IETF在2011年12月正式采纳了WebSocket协议,从此Web应用不再需要冗杂的HTTP替代方案,就可以在WebSocket协议下更快速、更简单地运行。

HTTP是单行线

    为了通过网络发送或者下载数据,客户端需要与服务器之间建立TCP连接。TCP连接是为保证在终端之间完成无损数据传输而设计的,使用IP地址和网络端口进行配对。众所周知,数据(信息)不仅需要被传输,还需要被理解,所以还必须用到一个运行在TCP传输层之上的应用层协议,从而实现客户端和服务器之间的“通话”。在网站上,这个应用层协议主要就是HTTP协议。尽管TCP支持通过虚拟的透明传输层实现双向数据传输,但是应用层的HTTP协议并不支持该选项。简单地说,双向数据传输意味着允许从服务器端发送推送信息到客户端,这是现代Web应用程序的特性之一,但是“单向”的HTTP基于非常简单的问答模型,客户端发送“请求”,服务器端才会进行“回复”。这样做不仅速度慢而且成本高。

    为了保证用户不需要频繁地按下更新按钮,程序员们想到了一些变通的方法,从而能够通过HTTP协议“巧妙”地实现即时通讯。其中最简单常用的一种方法是轮询(Polling),也就是浏览器端的脚本代码根据设定好的频率向服务器“询问”有没有新事件。轮询需要为每个请求建立一个新的连接,得到“回复”之后,服务器就会中断连接。如此一来就会花费更多的时间,而且频繁地新建TCP连接也会增加通信量,从而导致线路开销和网络负载倍增。另一种变通方案——长轮询(Long Polling)比轮询更先进一些,因为它可以等待服务器端有新的事件时才返回“通知”,缩短了可能会出现的通知延迟(Latency),让消息传输更及时,但并这没有完全解决网络负载大的问题。 

    HTTP streaming是变通方案中最好的一个,它可以长时间保持连接不断开,同时在后台实现与服务器按照不规则的顺序交换数据(无需刷新页面)。不过缺点是需要大量运用JavaScript对象XMLHttpRequest,该脚本在不同浏览器中的实现效果并不相同,而且它总是需要两个HTTP连接才能完成实时双向通讯。


 



    WebSocket协议通过建立套接层(Socket)解决以上替代方案出现的问题,该套接层可以通过IP地址和端口永久地维持客户端与服务器之间的信道,这样两端就可以在一个连接中同时完成双向的通讯,而不需要频繁地发送“请求”。在HTTP握手建立连接时有一个几乎已经被忘记的功能——“协议协商升级”(upgrade)。WebSocket现在将“协议协商升级”重新引入,通过HTTP握手完成应用层协议的升级。然后浏览器就可以调用WebSocket API,而不是JavaScript对象。是否启用了WebSocket连接可以通过浏览器地址栏中的统一资源标识符(URI)“ws://”和“wss://”(WebSocket安全协议)进行识别。

    为了确保只有获得允许的WebSocket终端之间才能进行通讯,开发者在HTTP协议头部增加了一些安全机制:客户端在请求中生成一个基本的Base64编码安全密钥,服务器收到该密钥之后对其进行SHA-1加密,然后再返回给客户端。从而避免WebSocket服务器遭遇未知源的恶意攻击,保证只有已知的或者可信的客户端才可以建立连接。

    另一个重要的保护机制出现在HTTP握手之后:WebSocket客户端必须通过简单的异或运算模板加密每一个数据包,防止互相连接的代理服务器将WebSocket连接误认为成HTTP请求。如果不加密数据包的话,遭到恶意脚本劫持的代理服务器就有可能对其他用户发起攻击。加密之后,因为代理服务器无法读取加密的信息,所以只能将其转发到指定的终端。

    目前,并非所有的浏览器都支持最新的WebSocket协议。但是这种情况在接下来的几个月会发生改变,因为WebSocket作为HTML5的重要特性之一,可以提供先进的互联网特性,让Web应用更加快速、高效和强大。

该文章在 2012/6/15 8:29:10 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved