当前位置: 首页 > 教程 > Websocket >

WebSocket双工通信

精华
小牛编辑
179浏览
2023-03-14

在深入了解WebSocket的需求之前,有必要先了解一下现有的技术,这些技术用于服务器和客户端之间的双工通信。这些技术如下 -

  • 轮询
  • 长轮询
  • 数据流
  • 回发和AJAX
  • HTML5

轮询

轮询可以定义为一种方法,无论传输中存在哪些数据,它都执行周期性请求。定期请求以同步方式发送。客户端在指定的时间间隔内向服务器发出定期请求。服务器的响应包括可用数据或其中的一些警告消息。

长轮询

顾名思义,长轮询包括类似轮询的技术。客户端和服务器保持连接处于活动状态,直到获取某些数据或发生超时。如果由于某些原因导致连接丢失,则客户端可以重新开始并执行顺序请求。

长轮询只是对轮询过程的性能改进,但是不断的请求可能会减慢过程。

数据流

数据流是实时数据传输的最佳选择。服务器保持连接打开并与客户端一起激活,直到并且除非提取所需的数据。在这种情况下,连接是无限期打开的。流传输包括HTTP标头,这会增加文件大小,增加延迟。这是一个主要缺点。

AJAX

AJAX基于Javascript的XmlHttpRequest对象。它是Asynchronous 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,CSS3和Javascript API。

下图显示了HTML5组件 -

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

<!DOCTYPE html>