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

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

3天内不再提示

为什么有了HTTP,还需要WebSocket协议?

kae1_cdebyte 来源:亿佰特物联网应用专家 2023-01-07 10:29 次阅读

HTTP是基于TCP协议的,同一时间里,客户端和服务器只能有一方主动发数据,是半双工通信

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

因此,我们需要一个基于TCP的新协议,即新的应用层协议WebSocket。

WebSocket是什么?

WebSocket 是一种用于在单个 TCP 连接上进行全双工通信的网络协议。它使用类似于 HTTP 的握手来建立连接,然后使用单独的持久连接来进行通信。这种方式使得 WebSocket 可以在浏览器和服务器之间进行实时通信,而不需要多次发送 HTTP 请求来获取数据。这意味着连接是持久的,它一直保持打开,直到有一方主动关闭连接。这使得 WebSocket 非常适合用于实时应用程序,因为它不需要不断地建立和关闭连接。

WebSocket怎样建立连接?

WebSocket 连接通常在客户端(例如浏览器)和服务器之间建立。客户端发送一个 HTTP 请求来建立连接,然后服务器返回一个确认消息,表示已建立连接。之后,客户端和服务器可以通过这个连接进行双向通信。客户端可以向服务器发送消息,服务器也可以向客户端发送消息。消息可以是任意的字节数组,并且可以使用任意的格式进行编码。

建立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 被广泛传播和使用。

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

HTTP 长轮询

现今对网络数据安全性也存在更多需求,WebSocket 连接使用的是标准的 TCP 连接,因此它可以在任何支持 TCP 的网络上使用。它使用的是 ws:// 和 wss:// 协议前缀,这些前缀可以与任何域名或 IP 地址结合使用。

WebSocket 连接是可以加密的,可以使用 TLS(Transport Layer Security,传输层安全)协议来保护数据的安全。这种加密连接使用的是 wss:// 协议前缀,与不加密的连接使用的 ws:// 协议前缀相区别。除此之外,WebSocket 还支持安全握手协议(Secure Handshake Protocol),这使得它可以在浏览器和服务器之间进行加密通信。总的来说,WebSocket 具有较高的安全性,可以保护数据的安全。

另外,需要注意的是,WebSocket不是基于HTTP的新协议,因为WebSocket只有在建立连接时才用到了HTTP,升级完成之后就跟HTTP不再有任何关系。

审核编辑:汤梓红

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

    关注

    12

    文章

    8120

    浏览量

    82521
  • HTTP
    +关注

    关注

    0

    文章

    466

    浏览量

    30315
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1272

    浏览量

    78297
  • WebSocket
    +关注

    关注

    0

    文章

    24

    浏览量

    3656

原文标题:为什么有了HTTP,还需要WebSocket协议?

文章出处:【微信号:cdebyte,微信公众号:亿佰特物联网应用专家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    为什么有了HTTP还需要RPC协议

    为什么有了HTTP还需要RPC协议呢?在进行说明之前,首先我们需要了解什么是HTTP协议,什么
    的头像 发表于 08-14 10:05 664次阅读
    为什么有了<b class='flag-5'>HTTP</b>,<b class='flag-5'>还需要</b>RPC<b class='flag-5'>协议</b>?

    单片机还需要学汇编吗

    单片机还需要学汇编吗
    发表于 07-14 19:49

    NetRouter开发板之Websocket

    的事,最后发现,居然个叫socket.io。据说,集成了以上各种协议。好吧。我落伍完事为了这个。找了一圈。没有扎到c的例子。参考:websockethtml例子:http://bl
    发表于 06-20 20:45

    Galileo gen2 wifi还需要配置什么?

    Wireless-AC 7260 进行到最后一步时,IDE Serial monitor提示WiFi shield not present 不知道是中间还需要配置什么?还是说那个linux不包含这个网卡的驱动?新人求助
    发表于 08-02 00:00

    为什么USB串口还需要TX,RX串口?

    ARDUNIO是干什么的?为什么USB串口还需要TX,RX串口?
    发表于 09-24 06:13

    基于TCP的一种新的网络协议WebSocket

    开启 WebSocket 服务WebSocket 服务是网页程序、安卓 App、微信小程序等获得数据和服务的接口,是基于TCP 的一种新的网络协议,它实现浏览器与服务器全双工通信。通
    发表于 12-16 07:38

    5G的商用还需要多久,看看三大运营商怎么说

    从1G到4G,也就短短几年时间,那么真真到5G的商用到底还需要多久呢?
    发表于 07-12 16:44 1.2w次阅读

    根据WebSocket协议完全使用C++实现函数

    由于需要在项目中增加Websocket协议,与客户端进行通信,不想使用开源的库,比如WebSocketPP,就自己根据WebSocket协议
    的头像 发表于 11-28 14:29 4226次阅读

    如何去做嵌入式_还需要具备这6点知识

    我们知道要入门嵌入式,进行嵌入式的学习,尤其是未来想要从事嵌入式硬件相关的工作,但是做嵌入式并不是只靠硬件还需要软件,那么还需要具备一下这6点知识。
    的头像 发表于 01-19 15:57 5230次阅读

    WebSocket有什么优点

    WebSocket是一种在单个TCP连接上进行全双工通信的协议WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。
    的头像 发表于 02-15 15:53 7975次阅读
    <b class='flag-5'>WebSocket</b>有什么优点

    鸿蒙上WebSocket的使用方法

    WebSocket 是一种网络通讯协议,很多网络开发工作者都需要它。本文介绍在 OpenHarmony 上 WebSocket 协议的使用方
    的头像 发表于 03-08 14:17 998次阅读

    为什么有了HTTP还需要WebSocket协议?

    HTTP是基于TCP协议的,同一时间里,客户端和服务器只能有一方主动发数据,是半双工通信。通常,打开某个网页,我们每点击一次网页上的某个选项,前端就会发送一次HTTP请求,网站返回一次HTTP
    的头像 发表于 01-12 15:54 483次阅读
    为什么有了<b class='flag-5'>HTTP</b>,<b class='flag-5'>还需要</b><b class='flag-5'>WebSocket</b><b class='flag-5'>协议</b>?

    什么是HTTP协议?什么是RPC协议?二者如何选择使用?

    为什么有了HTTP还需要RPC协议呢?在进行说明之前,首先我们需要了解什么是HTTP协议,什么
    的头像 发表于 08-11 09:25 1528次阅读
    什么是<b class='flag-5'>HTTP</b><b class='flag-5'>协议</b>?什么是RPC<b class='flag-5'>协议</b>?二者如何选择使用?

    使用变压器变压的电源还需要滤波器吗

    使用变压器变压的电源还需要滤波器吗
    的头像 发表于 08-31 14:03 551次阅读
    使用变压器变压的电源<b class='flag-5'>还需要</b>滤波器吗

    websocket协议的原理

    WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 WebSocket通信
    的头像 发表于 11-09 15:13 433次阅读
    <b class='flag-5'>websocket</b><b class='flag-5'>协议</b>的原理