一文了解什么是WebSocket

这篇具有很好参考价值的文章主要介绍了一文了解什么是WebSocket。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

WebSocket 允许我们创建“实时”应用程序,与传统 API 协议相比,该应用程序速度更快且开销更少。​

一、WebSocket 是如何工作的

按照传统的定义,WebSocket是一种双工协议,主要用于客户端-服务器通信通道。它本质上是双向的,这意味着通信在客户端与服务器之间来回发生。 

使用 WebSocket 开发的连接只要任何参与方中断连接就会持续存在。一旦一方断开连接,另一方将无法进行通信,因为连接会在其前面自动断开。

WebSocket需要HTTP的支持来发起连接。说到它的实用性,当涉及到数据的无缝流和各种不同步流量时,它是现代 Web 应用程序开发的支柱。 

二、为什么需要 Web Socket 以及何时应该避免使用 Web Socket

WebSocket 是一种重要的客户端-服务器通信工具,人们需要充分了解其实用性并避免使用其最大潜力的场景。

在以下情况下使用 WebSocket:

‍ 1.开发实时网络应用程序 

WebSocket 最常见的用途是实时应用程序开发,其中它有助于在客户端连续显示数据。当后端服务器不断发回这些数据时,WebSocket 允许在已经打开的连接中不间断地推送或传输这些数据。WebSocket 的使用使此类数据传输变得快速并充分利用了应用程序的性能。 

此类 WebSocket 实用程序的一个现实示例是比特币交易网站。在这里,WebSocket 协助部署的后端服务器向客户端发送数据处理。

‍ 2.创建聊天应用程序 

聊天应用程序开发人员在一次性交换和发布/广播消息等操作中向 WebSocket 寻求帮助。由于使用相同的 WebSocket 连接来发送/接收消息,因此通信变得简单快捷。

‍ 3.正在开发游戏应用程序

在游戏应用程序开发过程中,服务器必须不间断地接收数据,而不要求 UI 刷新。WebSocket 可以在不影响游戏应用程序 UI 的情况下实现这一目标。

既然已经清楚了应该在哪里使用 WebSocket,请不要忘记了解应该避免使用 WebSocket 的情况,让自己远离大量的操作麻烦。

当需要获取旧数据或仅需要一次性处理数据时,不应该使用 WebSocket。在这些情况下,使用 HTTP 协议是明智的选择。

三、WebSocket 与 HTTP

由于 HTTP 和 WebSocket 都用于应用程序通信,因此人们经常感到困惑,并且很难从这两者中选择一个。看一下下面提到的文本,可以更清楚地了解 HTTP 和 WebSocket。

如前所述,WebSocket 是一种框架式双向协议。相反,HTTP 是一个在 TCP 协议之上运行的单向协议。

由于WebSocket协议能够支持连续的数据传输,因此主要用于实时应用程序开发。HTTP 是无状态的,用于开发RESTful和 SOAP 应用程序。Soap仍然可以使用HTTP来实现,但是REST被广泛传播和使用。

在 WebSocket 中,通信发生在两端,这使其成为更快的协议。在 HTTP 中,连接是在一端建立的,这使得它比 WebSocket 有点慢。

WebSocket使用统一的TCP连接,需要一方终止连接。在发生这种情况之前,连接将保持活动状态。HTTP 需要为单独的请求构建不同的连接。请求完成后,连接会自动断开。 

四、WebSocket 连接是如何建立的

该过程从WebSocket 握手开始,涉及使用新方案 ws 或 wss。为了快速理解,您可以将它们分别视为 HTTP 和安全 HTTP (HTTPS)。

使用此方案,服务器和客户端应遵循标准 WebSocket 连接协议。WebSocket 连接建立从 HTTP 请求升级开始,该请求具有几个标头,例如 Connection: Upgrade、Upgrade: WebSocket、Sec-WebSocket- Key 等。 

以下是建立此连接的方式:

1.请求

连接:升级标头 表示 WebSocket 握手,而Sec-WebSocket-Key具有 Base64 编码的随机值。该值是在每次 WebSocket 握手期间任意生成的。除了上述内容之外,密钥标头也是该请求的一部分。

2.响应

响应标头Sec-WebSocket-Accept具有Sec-WebSocket-Key请求标头中提交的值的热情。这与特定的协议规范相关,并被广泛用于防止误导性信息。换句话说,它增强了 API 安全性并阻止配置不当的服务器在应用程序开发中造成错误。 

五、WebSocket协议

WebSocket 协议是一种框架协议,涉及每个数据的各种离散卡盘。它还部署帧类型、数据部分和有效负载长度以确保正常运行。要详细了解 WebSocket 协议,了解其构建模块至关重要。下面提到了最重要的部分。

Fin Bit是 WebSocket 的基本位。当开始连接时它将自动生成。 

‍ RSV1 、RSV2、RSV3 位是为进一步的机会保留的位。 

操作码是每个帧的一部分,解释解释特定帧的有效负载数据的过程。一些常见的操作码值为 0x00、0x0、0x02、0x0a、0x08 等。 

当一位设置为 1 时, 掩码位激活。

WebSocket 要求对所有有效负载数据使用客户端选择的随机密钥。屏蔽密钥与有效负载数据结合时,有助于 XOR 操作中的有效负载数据共享。这样做对于应用程序API 安全性非常重要,因为屏蔽可以防止缓存误解或缓存中毒。 

现在让我们详细了解其关键组成部分:

有效负载长度

这用于 WebSocket 中有效负载数据的总长度编码。当编码数据长度小于126字节时,显示Payload len。一旦有效负载数据长度超过 126 字节,就会使用附加字段来描述有效负载长度。 

掩蔽键

客户端发送到服务器的每个帧都用 32 位值进行掩码。当掩码位为 1 时,显示掩码键。如果掩码位为 0,则掩码键为零。 

有效载荷数据

各种任意应用数据和扩展数据被称为有效负载数据。客户端和服务器使用此数据进行协商,并用于早期的 WebSocket 握手。 

六、结论

WebSocket 支持客户端和服务器之间的双向交互式通信会话,而无需轮询服务器以获得答复,从而提供了比其他协议更高的速度和实际功能。但与所有应用程序一样,使用 WebSocket 需要仔细的编程实践和运行时保护,以防范一组独特的威胁。与传统方法相比,这种 API 深度防御策略将改善对用户和组织的保护。文章来源地址https://www.toymoban.com/news/detail-725002.html

到了这里,关于一文了解什么是WebSocket的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文揭秘利用python+unittest实现Webscoket协议接口测试_from websocket import create_connection

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新软件测试全套学习资料》

    2024年04月23日
    浏览(22)
  • WebSocket | 基于TCP的全双工通信网络协议

    ​🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎Python人工智能开发和前端开发。 🦅主页:@逐梦苍穹 📕所属专栏:Java EE ✈ 您的一键三连,是我创作的最大动力🌹 WebSocket 是基于 TCP 的一

    2024年02月19日
    浏览(60)
  • 持久双向通信网络协议-WebSocket-入门案例实现demo

    1 介绍 WebSocket 是基于 TCP 的一种新的 网络协议 。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建 持久性 的连接, 并进行 双向 数据传输。 HTTP协议和WebSocket协议对比: HTTP是 短连接 (一次响应完即消除) WebSocket是 长连接

    2024年01月16日
    浏览(32)
  • 【001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂】

    学历代表过去、能力代表现在、学习力代表将来。 一个良好的学习方法是通过输出来倒逼自己输入。写博客既是对过去零散知识点的总结和复盘,也是参加了 零声教育 写博客活动。 零声教育体验课:https://xxetb.xetslk.com/s/3fbO81 本文是开发过程中的知识点总结,供大家学习交

    2024年04月22日
    浏览(24)
  • 网络通信协议-HTTP、WebSocket、MQTT的比较与应用

    在今天的数字化世界中,各种通信协议起着关键的作用,以确保信息的传递和交换。HTTP、WebSocket 和 MQTT 是三种常用的网络通信协议,它们各自适用于不同的应用场景。本文将比较这三种协议,并探讨它们的主要应用领域。 HTTP (超文本传输协议) HTTP  是最常见的协议之一

    2024年02月05日
    浏览(44)
  • 前端面试:【网络协议与性能优化】HTTP/HTTPS、TCP/IP和WebSocket

    嗨,亲爱的Web开发者!在构建现代Web应用时,了解网络协议是优化性能和确保安全性的关键。本文将深入探讨HTTP/HTTPS、TCP/IP和WebSocket这三个网络协议,帮助你理解它们的作用以及如何优化Web应用的性能。 1. HTTP/HTTPS协议: HTTP(超文本传输协议): HTTP是用于在Web上传输数据的

    2024年02月11日
    浏览(38)
  • linux【网络编程】之HTTPS协议,一文了解HTTPS是如何保证通信安全的

    在上篇文章中我们了解到什么事HTTP协议,HTTP协议内容都是按照⽂本的⽅式明⽂传输的.这就导致在传输过程中出现⼀些被篡改的情况,本期我们来探讨一下HTTPS协议。 HTTPS( 超文本传输安全协议 )也是⼀个应⽤层协议.是在HTTP协议的基础上引⼊了⼀个加密层. HTTPS:默认端口与

    2024年02月08日
    浏览(51)
  • 一文读懂Websocket

    提示:通过本章节的学习,你想深入了解什么是websocket。 提示:这里可以添加本文要记录的大概内容: 例如:websocket是html5新增的全双工通讯协议,基于Tcp协议,属于应用层协议。 提示:以下是本篇文章正文内容,下面案例可供参考 WebSocket 是一种在单个 TCP 连接上进行全双

    2024年02月16日
    浏览(29)
  • 简单但全面了解一下webSocket

    **全双工:**通信的两个参与方可以同时发送和接收数据,不需要等待对方的响应或传输完成。双全工指的是一种通信方式,通过建立全双工的持久连接客户端和服务器之间就能实现高效实时性更强的通信。 传统通信 : 电子邮件、网页浏览存在延迟,需要用户主动请求来获取

    2024年02月20日
    浏览(28)
  • Go语言github.com/gorilla/websocket框架websocket协议通信实战

          websocket是实际开发中比较常用的应用层协议,本文利用github.com/gorilla/websocket框架进行websocket通信实战。 目录 1.下载github.com/gorilla/websocket 2.websocket服务端 3.websocket Go客户端 4.websocket 网页客户端 5.运行结果展示 go get github.com/gorilla/websocket 服务器:  Go语言客户端:  We

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包