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

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

3天内不再提示

WebSocket有什么优点

Wildesbeast 来源:今日头条 作者:深视野 2020-02-15 15:53 次阅读

WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。HTML5开始提供WebSocket协议的支持。

WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

WebSocket连接过程

客户端通过HTTP协议向服务端发送握手,服务端向客户端返回ACK,此时握手成功,建立连接并维持该连接;

后面服务端和客户端就可以基于建立的连接进行双向通信,直到连接关闭。

2. WebSocket与HTTP对比

HTTP WebSocket
通信方式 单工 全双工
端口 80/443 80/443
协议 HTTP/HTTPS WS/WSS
跨域问题
网络开销 - 较小

优点

较少的控制开销。在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。在不包含扩展的情况下,对于服务器到客户端的内容,此头部大小只有2至10字节(和数据包长度有关);对于客户端到服务器的内容,此头部还需要加上额外的4字节的掩码。相对于HTTP请求每次都要携带完整的头部,此项开销显著减少了。

更强的实时性。由于协议是全双工的,所以服务器可以随时主动给客户端下发数据。相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显更少;即使是和Comet等类似的长轮询比较,其也能在短时间内更多次地传递数据。

保持连接状态。与HTTP不同的是,Websocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。而HTTP请求可能需要在每个请求都携带状态信息(如身份认证等)。

更好的二进制支持。Websocket定义了二进制帧,相对HTTP,可以更轻松地处理二进制内容。

可以支持扩展。Websocket定义了扩展,用户可以扩展协议、实现部分自定义的子协议。如部分浏览器支持压缩等。

更好的压缩效果。相对于HTTP压缩,Websocket在适当的扩展支持下,可以沿用之前内容的上下文,在传递类似的数据时,可以显著地提高压缩率。

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

    关注

    12

    文章

    8088

    浏览量

    82433
  • HTTP
    +关注

    关注

    0

    文章

    464

    浏览量

    30296
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1265

    浏览量

    78258
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    自举电路的作用和优点哪些?

    什么是自举,是输入端时偏置吗,例如基极输入的偏置?还有一些在功率晶体管的驱动电路设计中,也用到了自举升压电路,而且同一桥臂是下桥先开通,自举升压上桥驱动充电,这两者是否一样吗? 自举有什么优点说能增加输入电阻的,输入阻抗可以通过反馈自举大幅度增加自身阻值。这是什么原因
    发表于 01-28 20:00

    一文详解WebSocket协议

    WebSocket出现之前,一个Web应用(即时聊天、多人协作)的客户端和服务端之间常见的双向数据交换方式有短轮询、长轮询、SSE(Server-Sent Events,服务器发送事件)。这些方式
    的头像 发表于 01-07 11:26 1018次阅读
    一文详解<b class='flag-5'>WebSocket</b>协议

    websocket协议的原理

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

    RGB屏幕对比其他的屏幕什么优点

    什么特别的优点
    发表于 11-01 06:39

    【中秋国庆不断更】HarmonyOS网络管理开发—HTTP与WebSocket

    一、网络管理开发概述 网络管理模块主要提供以下功能: ● ​​HTTP数据请求​​:通过HTTP发起一个数据请求。 ● ​​WebSocket连接​​:使用WebSocket建立服务器与客户端的双向
    发表于 09-27 15:40

    LabView工具包WebSocket-API主机下载

    LabView工具包WebSocket-API主机下载
    发表于 09-19 09:15 65次下载

    WebSocket的6种集成方式介绍

    由于前段时间我实现了一个库【Spring Cloud】一个配置注解实现 WebSocket 集群方案
    的头像 发表于 09-02 16:52 851次阅读

    物联网与ESP32、Node-RED和InfluxDB与WebSocket

    电子发烧友网站提供《物联网与ESP32、Node-RED和InfluxDB与WebSocket.zip》资料免费下载
    发表于 07-13 09:51 0次下载
    物联网与ESP32、Node-RED和InfluxDB与<b class='flag-5'>WebSocket</b>

    如何让WebSocket服务器库使用ethernet2和有线以太网连接而不是WIFI的方向?

    我可以在 websocketserver.h 文件中看到,由于定义了 ESP8266,库使用或尝试使用 WIFI。在每种情况下,我都找不到或找不到在不使用 WIFI 的情况下将 Websocket
    发表于 05-19 11:07

    尝试构建“websocket”时遇到困难,无法编译怎么解决?

    因此,为了让 websocket Wi-Fi 在我的 CNC 雕刻机上工作,我得到了一个包含 ESP8266 的 ESP-01 板,我尝试完全按照上的说明在 Arduino 上构建
    发表于 05-08 14:35

    构建websocket草图时报错的原因?

    上的描述构建 websocket 草图,但我遇到了一些编译错误,是否有人识别出一个可能仍然存在的文件丢失或实际上可能已经改变? 网络服务器:90:34:错误:“WStype_t”尚未声明 90
    发表于 05-08 06:38

    如何使用NodeMCU作为1个或多个浏览器客户端的websocket

    我想使用 NodeMCU 作为 1 个或多个浏览器客户端的 websocket 。 幸运的是,这里代码可以做到这一点: https: (由@creationix 和/或
    发表于 04-26 08:55

    PCB中LDI曝光机的工作原理是什么?哪些优点呢?

    PCB中LDI曝光机的工作原理是什么?哪些优点呢?
    发表于 04-23 16:16