WebSocket双工通信
精华
小牛编辑
183浏览
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>