最后更新:2022-07-31 10:17:14 手机定位技术交流文章
MQTT是一种长连接技术,所谓的长连接,要保持长期的联系,每个连接可以传输多个数据,连接的两边都有生命支持机制来维持连接。就像一个外国办事处一样。设备总是在线,当有需要沟通的问题时,通过这个总是在线的设备来交流,这个就是长连接。

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

那么,我们今天要讨论的WebSocket是什么类型的协议,它的关键特征是什么?
下面Rigo带你揭示WebSocket神秘的面纱!
WebSocket(英语:WebSocket)是一种协议,用于创建一个快速的双向通道,通过一个单一的TCP连接连续传输数据。
WebSockets允许您根据消息发送数据,类似于 UDP,但有了TCP的可靠性,WebSocket使用HTTP作为初始传输机制。但接收HTTP响应后保持TCP连接的活性,用于在客户端和服务器之间发送消息。

英文全称:User Datagram Protocol
中文名称:用户数据报告协议
无连接协议
速度快
允许丢失数据包
适用于快速高效的传输应用
英文全称:Transmission Control Protocol
中文名称:输送控制协议
面向连接的协议
可靠的传输保证没有数据包丢失
速度比较慢,需要更多的资源
适用于需要高可靠性的应用
英文全称:Hypertext Transfer Protocol
中文名称:超文本传输协议
无状态协议
遵循客户端-服务器模型
广泛用于网络浏览器和网络服务器之间的通信
WebSocket URLs使用ws或wss而不是http或 https
首先,让我们看看如何在没有WebSocket的情况下呼叫网站,在互联网上,网页通常通过HTTP连接传输,数据通过协议传播,然后网站在浏览器中显示出来,然后对每个用户的行为,例如,当你点击或双击按钮或链接时,客户端向服务器发送请求。

当通过HTTP调用网站时,客户端必须先向服务器发送请求,然后服务器通过发送请求内容来响应,换句话说,HTTP基于一个简单的请求和响应模型,导致大量延迟。
然后让我们看看WebSocket连接如何工作。
WebSocket手动连接客户端到服务器,握手过程与TCP握手过程相似,握手后,通道保持打开状态,那么客户和服务端可以保持持久的沟通,服务器可以独立地向客户端发送数据,而无需客户端请求。
当WebSocket第一次启动时,向指定的URL发送一个简单的HTTP请求,从那里,HTTP请求“升级”到TCP接口,它基本上是一个安全的隧道,用于在HTTP握手发生后流数据,手握可以被认为是“协议”来维护客户端和服务器之间的连接。

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

步骤1:客户端通过握手协议建立连接到服务端
步骤2:服务端响应客户端的握手请求
步骤3:服务端开始向客户端发送消息
步骤4:客户端可以选择退出网络接口连接
WebSocket使用场景非常多,只要的长连接的应用,一定有 WebSocket 的身影,比如:
游戏平台
直播平台
视频平台
聊天平台
等等
WebSocket没有优先概念,MQTT可以设置优先
WebSocket延迟较低,MQTT延迟较高
WebSocket没有主题概念,但MQTT可以设置主题
WebSocket是一个双向通信协议,HTTP是一个单向协议
HTTP连接比WebSocket慢
WebSocket协议提供持久的连接交换消息,HTTP允许多个请求重用单一的连接,但通常有较少的加班时间来控制资源消耗。
支持双工通信。
您可以在实时发送和接收数据。
可以跨源通信
跨平台兼容性好
开销小
支持长连接
等等
网页浏览器必须与HTML5完全兼容,否则不能使用WebSocket
不适合多个动态场景
没办法做到本地缓存
跨源通信可能导致数据泄漏
WebSocket是一个非常常见的协议,大部分用于需要实时数据更新的场景中,其优点包括快速、慢、长连接,并支持许多sdks,如js、Java、Python、Go等。
本文主要从以下方面介绍WebSocket:
什么是WebSocket?
UDP
TCP
HTTP
WebSocket如何工作?
WebSocket使用场景
WebSocket vs. MQTT
WebSocket vs. HTTP
WebSocket 优势
WebSocket缺点
总结
本文由 在线网速测试 整理编辑,转载请注明出处。