WebSockets - 双工通信
在深入了解 Web 套接字的需求之前,有必要了解一下用于服务器和客户端之间的双工通信的现有技术。 它们如下 −
- 轮询
- 长轮询
- 流媒体
- Postback 和 AJAX
- HTML5
轮询
轮询可以定义为一种方法,无论传输中存在什么数据,它都执行周期性请求。 周期性请求以同步方式发送。 客户端以指定的时间间隔向服务器发出周期性请求。 服务器的响应包括可用数据或一些警告消息。
长轮询
长轮询,顾名思义,包括类似轮询的技术。 客户端和服务器保持连接处于活动状态,直到获取某些数据或发生超时。 如果由于某种原因连接丢失,客户端可以重新开始并执行顺序请求。
长轮询只不过是轮询过程的性能改进,但持续的请求可能会减慢该过程。
流媒体
它被认为是实时数据传输的最佳选择。 服务器保持与客户端的连接打开和活动,直到获取所需的数据为止。 在这种情况下,连接被称为无限期打开。 流媒体包含 HTTP 标头,这会增加文件大小并增加延迟。 这可以被认为是一个主要缺点。
AJAX
AJAX 基于 Javascript 的 XmlHttpRequest 对象。 它是异步 Javascript 和 XML 的缩写形式。 XmlHttpRequest 对象允许执行 Javascript,而无需重新加载整个网页。 AJAX 仅发送和接收网页的一部分。
使用XmlHttpRequest对象进行AJAX调用的代码片段如下 −
var xhttp; if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else { // code for IE6, IE5 xhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
与 Web Sockets 相比,AJAX 的主要缺点是 −
- 它们发送 HTTP 标头,这使得总大小变大。
- 通信是半双工的。
- 网络服务器消耗更多资源。
HTML5
HTML5 是一个用于开发和设计 Web 应用程序的强大框架。 主要支柱包括标记、CSS3 和 Javascript API。
下图显示了 HTML5 组件 −
下面给出的代码片段描述了 HTML5 及其文档类型的声明。
<!DOCTYPE html>
为什么我们需要 Web 套接字?
互联网被认为是超文本标记语言(HTML)页面的集合,这些页面相互链接以形成概念性的信息网络。 随着时间的推移,静态资源的数量不断增加,项目也越来越丰富,例如图像,并开始成为网络结构的一部分。
服务器技术先进,允许动态服务器页面 - 其内容是基于查询生成的页面。
很快,对更多动态网页的需求导致了动态超文本标记语言 (DHTML) 的出现。 这一切都归功于 JavaScript。 在接下来的几年里,我们看到了跨框架通信,试图避免页面重新加载,然后在框架内进行HTTP 轮询。
但是,这些解决方案都没有为服务器和客户端之间的实时双向通信提供真正标准化的跨浏览器解决方案。
这引发了对 Web Sockets 协议的需求。 它催生了全双工通信,为所有网络浏览器带来了丰富的桌面功能。