不要小看 WebSocket!长连接、有状态、双向、全双工都是王炸技能

      最后更新:2022-07-31 10:17:14 手机定位技术交流文章

      MQTT是一种长连接技术,所谓的长连接,要保持长期的联系,每个连接可以传输多个数据,连接的两边都有生命支持机制来维持连接。就像一个外国办事处一样。设备总是在线,当有需要沟通的问题时,通过这个总是在线的设备来交流,这个就是长连接。

      还有一种大家特别熟悉的协议:HTTP,它是无状态的协议,所谓的无状态就是请求与请求之间不存在记忆关系,服务器是不知道客户端的状态的。

      那么,我们今天要讨论的WebSocket是什么类型的协议,它的关键特征是什么?

      下面Rigo带你揭示WebSocket神秘的面纱!

      什么是WebSocket?

      WebSocket(英语:WebSocket)是一种协议,用于创建一个快速的双向通道,通过一个单一的TCP连接连续传输数据。

      WebSockets允许您根据消息发送数据,类似于 UDP,但有了TCP的可靠性,WebSocket使用HTTP作为初始传输机制。但接收HTTP响应后保持TCP连接的活性,用于在客户端和服务器之间发送消息。

      UDP

      • 英文全称:User Datagram Protocol

      • 中文名称:用户数据报告协议

      • 无连接协议

      • 速度快

      • 允许丢失数据包

      • 适用于快速高效的传输应用

      TCP

      • 英文全称:Transmission Control Protocol

      • 中文名称:输送控制协议

      • 面向连接的协议

      • 可靠的传输保证没有数据包丢失

      • 速度比较慢,需要更多的资源

      • 适用于需要高可靠性的应用

      HTTP

      • 英文全称:Hypertext Transfer Protocol

      • 中文名称:超文本传输协议

      • 无状态协议

      • 遵循客户端-服务器模型

      • 广泛用于网络浏览器和网络服务器之间的通信

      • WebSocket URLs使用ws或wss而不是http或 https

      WebSocket如何工作?

      首先,让我们看看如何在没有WebSocket的情况下呼叫网站,在互联网上,网页通常通过HTTP连接传输,数据通过协议传播,然后网站在浏览器中显示出来,然后对每个用户的行为,例如,当你点击或双击按钮或链接时,客户端向服务器发送请求。

      当通过HTTP调用网站时,客户端必须先向服务器发送请求,然后服务器通过发送请求内容来响应,换句话说,HTTP基于一个简单的请求和响应模型,导致大量延迟。

      然后让我们看看WebSocket连接如何工作。

      WebSocket手动连接客户端到服务器,握手过程与TCP握手过程相似,握手后,通道保持打开状态,那么客户和服务端可以保持持久的沟通,服务器可以独立地向客户端发送数据,而无需客户端请求。

      当WebSocket第一次启动时,向指定的URL发送一个简单的HTTP请求,从那里,HTTP请求“升级”到TCP接口,它基本上是一个安全的隧道,用于在HTTP握手发生后流数据,手握可以被认为是“协议”来维护客户端和服务器之间的连接。

      这个就很强了,以前是你必须触发一下服务器的相关接口,吼一下,服务器才会给你数据,现在主动权可以握在服务器和客户端双方了,服务器有新的消息也可以主动发给客户端,这个其实就是双向通信。

      • 步骤1:客户端通过握手协议建立连接到服务端

      • 步骤2:服务端响应客户端的握手请求

      • 步骤3:服务端开始向客户端发送消息

      • 步骤4:客户端可以选择退出网络接口连接

      WebSocket使用场景

      WebSocket使用场景非常多,只要的长连接的应用,一定有 WebSocket 的身影,比如:

      • 游戏平台

      • 直播平台

      • 视频平台

      • 聊天平台

      • 等等

      WebSocket vs. MQTT

      • WebSocket没有优先概念,MQTT可以设置优先

      • WebSocket延迟较低,MQTT延迟较高

      • WebSocket没有主题概念,但MQTT可以设置主题

      WebSocket vs. HTTP

      • WebSocket是一个双向通信协议,HTTP是一个单向协议

      • HTTP连接比WebSocket慢

      • WebSocket协议提供持久的连接交换消息,HTTP允许多个请求重用单一的连接,但通常有较少的加班时间来控制资源消耗。

      WebSocket 优势

      • 支持双工通信。

      • 您可以在实时发送和接收数据。

      • 可以跨源通信

      • 跨平台兼容性好

      • 开销小

      • 支持长连接

      • 等等

      WebSocket缺点

      • 网页浏览器必须与HTML5完全兼容,否则不能使用WebSocket

      • 不适合多个动态场景

      • 没办法做到本地缓存

      • 跨源通信可能导致数据泄漏

      总结

      WebSocket是一个非常常见的协议,大部分用于需要实时数据更新的场景中,其优点包括快速、慢、长连接,并支持许多sdks,如js、Java、Python、Go等。

      本文主要从以下方面介绍WebSocket:

      • 什么是WebSocket?

      • UDP

      • TCP

      • HTTP

      • WebSocket如何工作?

      • WebSocket使用场景

      • WebSocket vs. MQTT

      • WebSocket vs. HTTP

      • WebSocket 优势

      • WebSocket缺点

      • 总结

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/31009.html

          热门文章

          文章分类