0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是WebSocket协议?

亿佰特物联网应用专家 2023-08-25 08:23 次阅读

通常,打开某个网页,我们每点击一次网页上的某个选项,前端就会发送一次HTTP请求,网站返回一次HTTP响应。这种由客户端主动请求,服务器响应的方式满足大部分网页的功能场景。但这种情况下,服务器不会主动给客户端发消息。而类似网页游戏这样的场景,是需要客户端和服务器之间互相主动发大量数据的。
8a7d782e-42dd-11ee-8e12-92fbcf53809c.png

WebSocket是什么?

WebSocket 是一种用于在单个 TCP 连接上进行全双工通信网络协议。它使用类似于 HTTP 的握手来建立连接,然后使用单独的持久连接来进行通信。这种方式使得 WebSocket 可以在浏览器和服务器之间进行实时通信,而不需要多次发送 HTTP 请求来获取数据。这意味着连接是持久的,它一直保持打开,直到有一方主动关闭连接。这使得 WebSocket 非常适合用于实时应用程序,因为它不需要不断地建立和关闭连接。
WebSocket怎样建立连接?WebSocket 连接通常在客户端(例如浏览器)和服务器之间建立。客户端发送一个 HTTP 请求来建立连接,然后服务器返回一个确认消息,表示已建立连接。之后,客户端和服务器可以通过这个连接进行双向通信。客户端可以向服务器发送消息,服务器也可以向客户端发送消息。消息可以是任意的字节数组,并且可以使用任意的格式进行编码。8a9276e8-42dd-11ee-8e12-92fbcf53809c.jpg

建立Websocket连接

WebSocket 是一种必不可少的客户端—服务器通信工具,需要充分了解其实用性并避免使用场景才能从其最大潜力中获益。

WebSocket的实际用途

最常见的用途是在实时应用程序开发中,它有助于在客户端持续显示数据。由于后端服务器不断发回此数据,WebSocket 允许在已打开的连接中不间断地推送或传输此数据,使此类数据传输更快,并利用了应用程序的性能。
聊天应用程序开发人员在一次性交换、发布、广播消息等操作中调用 WebSocket 。由于使用相同的 WebSocket 连接来发送或接收消息,因此通信变得简单、轻量、快捷。在进行游戏应用程序开发的同时,服务器必须不间断地接收数据,而不要求刷新 UI。WebSocket在不影响游戏应用程序 UI 的情况下实现了这一目标。

从上述几个示例中,我们大概知道了在什么情况下不太适合使用,例如数据交互周期很长,甚至几小时一次的情况或只需要一次性处理数据时,不应采用 WebSocket协议。在这些情况下,使用 HTTP 协议是一个明智的选择。由于 HTTP 和 WebSocket 都用于应用程序通信,因此人们常常感到困惑,很难从这两者中选择一个。

WebSocket 与 HTTP 的选择

WebSocket 是一种框架双向协议。与此相反,HTTP 是一种单向协议,作用于 TCP 协议之上。由于WebSocket协议能够支持不间断的数据传输,因此主要用于实时应用程序开发。HTTP 是无状态的,用于开发RESTful和 SOAP 应用程序。SOAP 仍然可以使用 HTTP 来实现,但是 REST 被广泛传播和使用。
8ac08010-42dd-11ee-8e12-92fbcf53809c.png

在 WebSocket 中,通信发生在两端,这使其成为更快的协议。在 HTTP 中,连接是在一端建立的,这使得它比 WebSocket 有点慢。WebSocket 使用统一的 TCP 连接,需要一方终止连接。在它发生之前,连接保持活动状态。HTTP 需要为单独的请求建立不同的连接。请求完成后,连接会自动断开。 8add712a-42dd-11ee-8e12-92fbcf53809c.jpg

HTTP 长轮询

现今对网络数据安全性也存在更多需求,WebSocket 连接使用的是标准的 TCP 连接,因此它可以在任何支持 TCP 的网络上使用。它使用的是 ws:// 和 wss:// 协议前缀,这些前缀可以与任何域名或 IP 地址结合使用。WebSocket 连接是可以加密的,可以使用 TLS(Transport Layer Security,传输层安全)协议来保护数据的安全。这种加密连接使用的是 wss:// 协议前缀,与不加密的连接使用的 ws:// 协议前缀相区别。除此之外,WebSocket 还支持安全握手协议(Secure Handshake Protocol),这使得它可以在浏览器和服务器之间进行加密通信。总的来说,WebSocket 具有较高的安全性,可以保护数据的安全。另外,需要注意的是,WebSocket不是基于HTTP的新协议,因为WebSocket只有在建立连接时才用到了HTTP,升级完成之后就跟HTTP不再有任何关系。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web
    Web
    +关注

    关注

    2

    文章

    1263

    浏览量

    69458
  • HTTP
    +关注

    关注

    0

    文章

    505

    浏览量

    31216
  • 网页
    +关注

    关注

    0

    文章

    73

    浏览量

    19316
收藏 人收藏

    评论

    相关推荐

    socket 和 WebSocket 的区别

    在现代网络通信中,Socket和WebSocket是两种常见的通信协议。它们在实现网络通信、数据传输等方面发挥着重要作用。然而,它们之间存在一些关键的区别。 1. Socket(套接字) 1.1
    的头像 发表于 11-12 14:33 425次阅读

    socket与WebSocket的区别与联系

    在现代网络通信中,Socket和WebSocket是两种常见的通信协议。它们在网络编程中扮演着重要的角色,但它们之间存在一些关键的区别和联系。 1. 定义和基本概念 Socket(套接字
    的头像 发表于 11-04 09:19 404次阅读

    不可错过的Air780E之WebSocket应用示范!小白篇

    咋们今天说的Air780E之WebSocket应用示范针对小白绝对是不可以错过的示例。
    的头像 发表于 11-03 20:16 831次阅读
    不可错过的Air780E之<b class='flag-5'>WebSocket</b>应用示范!小白篇

    华纳云:探讨可用于降低服务器网络延迟的先进的网络协议

    、QUIC和WebSocket,分析它们如何在不同场景下减少服务器网络延迟,并提供实现建议。 1. 引言 在现代互联网应用中,用户对加载速度和响应时间的要求越来越高。网络延迟直接影响到用户体验,因此优化网络通信变得尤为重要。传统的网络协议,如
    的头像 发表于 09-30 15:14 221次阅读

    ESP8266_RTOS_SDK 1.4.0中的“websocket_demo”不起作用是怎么回事?

    新的SDK用户在这里。我刚刚尝试了昨天发布的 ESP8266_RTOS_SDK 1.4.0 中包含的示例“websocket_demo”。我唯一更改的是 websocket.c 中的 wifi 凭据
    发表于 07-18 07:05

    websocket.c RTOS演示中缺少对wifi_connect()的调用怎么办?

    在 RTOS SDK 1.3 中,有一个名为 /examples/websocket_demo/websocket/websocket.c 的示例。在函数中有一个名为 websocket
    发表于 07-18 06:37

    esp32c3-min-1使用at指令来连接阿里云失败了怎么处理?

    : ESP32 Websocket Client Upgrade: websocket Sec-WebSocket-Version: 13 Sec-WebSocket
    发表于 06-27 07:42

    请问websocket库怎么读取服务器发来的数据?

    官方websocket库怎么读取服务器发来的数据?
    发表于 06-25 06:40

    鸿蒙开发网络管理:ohos.net.webSocket WebSocket连接

    使用WebSocket建立服务器与客户端的双向连接,需要先通过[createWebSocket]方法创建[WebSocket]对象,然后通过[connect]方法连接到服务器。当连接成功后,客户端
    的头像 发表于 06-19 17:12 569次阅读
    鸿蒙开发网络管理:ohos.net.<b class='flag-5'>webSocket</b> <b class='flag-5'>WebSocket</b>连接

    如何移植libwebsockets

    libwebsockets是一个高性能的开源C语言库,专为实现WebSocket协议及相关的HTTP协议而设计。它不仅使开发者能够在客户端与服务器端轻松构建WebSocket连接,还可
    的头像 发表于 06-17 13:53 2257次阅读
    如何移植libwebsockets

    ESP32进行websocket通信接收数据出错的原因?

    I (104793) WEBSOCKET: WEBSOCKET_EVENT_CONNECTED I (104953) WEBSOCKET: WEBSOCKET_EVENT_DATA I
    发表于 06-14 07:42

    鸿蒙原生应用开发-网络管理WebSocket连接

    一、场景介绍 使用WebSocket建立服务器与客户端的双向连接,需要先通过createWebSocket()方法创建WebSocket对象,然后通过connect()方法连接到服务器。当连接成功后
    发表于 04-07 09:46

    TPUNB协议是什么?TPUNB协议特点 TPUNB协议调度

    TPUNB协议是什么?TPUNB协议特点 TPUNB协议调度 TPUNB协议是一种用于物联网(IoT)通信的网络协议。它是在3GPP标准下定
    的头像 发表于 02-01 10:28 3093次阅读

    恒讯科技带大家深入理解:WebSocket服务器的工作原理

    WebSocket是一种在单个TCP连接上进行全双工通信的通信协议。它的设计目标是在Web浏览器和服务器之间提供低延迟、高效的双向通信。下面是深入理解WebSocket服务器工作原理的一些关键概念
    的头像 发表于 01-29 16:48 477次阅读

    一文详解WebSocket协议

    在效率和网络带宽利用率方面存在诸多问题。WebSocket协议应运而生,对外提供了简单的双向数据传输能力。
    的头像 发表于 01-07 11:26 7445次阅读
    一文详解<b class='flag-5'>WebSocket</b><b class='flag-5'>协议</b>