📜  WebSockets-双工通信

📅  最后修改于: 2020-10-17 05:53:06             🧑  作者: Mango


在开始使用Web套接字之前,有必要了解一下用于服务器与客户端之间的双工通信的现有技术。它们如下-

  • 轮询
  • 长轮询
  • 流媒体
  • 回发和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套接字相比, AJAX的主要缺点是-

  • 它们发送HTTP标头,从而使总大小更大。
  • 通信是半双工的。
  • Web服务器消耗更多资源。

HTML5

HTML5是用于开发和设计Web应用程序的强大框架。主要支柱包括Mark-up,CSS3Javascript API。

下图显示了HTML5组件-

HTML5

下面给出的代码段描述了HTML5的声明及其doctype。

为什么我们需要Web套接字?

互联网被认为是超文本标记语言(HTML)页面的集合,这些页面相互链接以形成概念性的信息网络。随着时间的流逝,静态资源的数量和内容越来越丰富,例如图像,并开始成为网络结构的一部分。

服务器技术先进,允许动态服务器页面-基于查询生成内容的页面。

很快,对具有更多动态网页的需求导致了动态超文本标记语言(DHTML)的可用性。感谢JavaScript。在接下来的几年中,我们看到了跨帧通信,试图避免页面重新加载,然后避免帧内进行HTTP轮询

但是,这些解决方案都没有为服务器和客户端之间的实时双向通信提供真正标准化的跨浏览器解决方案。

这引起了Web套接字协议的需求。它引起了全双工通信,从而为所有Web浏览器带来了桌面丰富的功能。