WebSocket - 双工通信

  • 简述

    在深入了解 WebSocket的需求之前,有必要了解一下用于服务器和客户端之间的双工通信的现有技术。它们如下 -
    • 轮询
    • 长轮询
    • 流媒体
    • 回发和 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 标头,这使总大小变大。
    • 通信是半双工的。
    • Web 服务器消耗更多资源。
  • HTML5

    HTML5 是用于开发和设计 Web 应用程序的强大框架。主要支柱包括标记、CSS3Javascript API。
    下图显示了 HTML5 组件 -
    HTML5
    下面给出的代码片段描述了 HTML5 的声明及其 doctype。
    
    <!DOCTYPE html>
    
  • 为什么我们需要 Web Sockets?

    互联网被认为是超文本标记语言 (HTML) 页面的集合,这些页面相互链接以形成概念性的信息网络。随着时间的推移,静态资源的数量和内容越来越丰富,例如图像,并开始成为网络结构的一部分。
    服务器技术先进,允许动态服务器页面 - 其内容是基于查询生成的页面。
    很快,对拥有更多动态网页的要求导致了动态超文本标记语言 (DHTML) 的可用性。这一切都归功于 JavaScript。在接下来的几年里,我们看到了跨帧通信,试图避免页面重新加载,然后在帧内进行HTTP 轮询
    然而,这些解决方案都没有为服务器和客户端之间的实时双向通信提供真正标准化的跨浏览器解决方案。
    这引起了对 Web Sockets 协议的需求。它引发了全双工通信,为所有 Web 浏览器带来了丰富的桌面功能。