WebSocket的特点

解答

  • 支持双向通信,实时性更强
  • 可以发送文本,也可以发送二进制数据
  • 建立在TCP协议之上,服务端的实现比较容易
  • 数据格式比较轻量,性能开销小,通信高效
  • 没有同源限制,客户端可以与任意服务器通信
  • 协议标识符是ws(如果加密,则为wss),服务器网址就是 URL
  • 与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易被屏蔽,能通过各种 HTTP 代理服务器。

解析

WebSocket 的实现相对容易,主要有以下几个原因:

  1. 基于 TCP 协议: WebSocket 建立在 TCP 协议之上。TCP 是一种可靠的、面向连接的协议,提供了对数据可靠传输的支持。与基于 UDP 的协议相比,TCP 处理了很多连接管理、流控制等方面的复杂性,使得 WebSocket 在底层通信上更为稳定,无需开发者过多关注底层细节。
  2. 与 HTTP 协议的良好集成: WebSocket 的握手过程采用了标准的 HTTP 协议。在握手过程中,客户端和服务器之间通过 HTTP 协商升级到 WebSocket 协议,这就使得 WebSocket 在与现有的 Web 基础设施、网络代理等方面具有较好的兼容性。服务端实现 WebSocket 主要需要处理这个握手阶段,之后就可以在同一连接上进行 WebSocket 数据的交换。
  3. 持久连接: WebSocket 在连接建立后是持久性的,与传统的 HTTP 请求-响应模型不同,不需要频繁地建立和关闭连接。这降低了服务端实现的复杂性,不需要处理连接的频繁变化,只需要在连接建立后保持连接状态,以及处理来自客户端的消息。
  4. 成熟的库和框架支持: 有许多成熟的 WebSocket 库和框架,这些库和框架提供了抽象和封装,简化了 WebSocket 服务器的实现。开发者可以使用这些工具,减少了从零开始实现 WebSocket 服务器的难度。

数据格式比较轻量,性能开销小,通信高效,主要体现在:

  1. 数据格式轻量: WebSocket 协议中传输的数据包是经过精简的二进制或文本数据,相比于 HTTP 协议中的文本数据,WebSocket 的数据格式更加轻量。这是因为 WebSocket 在传输过程中不需要像 HTTP 那样使用大量的头部信息,而是采用更紧凑的格式。
  2. 性能开销小: WebSocket 建立在 TCP 协议之上,TCP 是一种高效、可靠的传输协议。相比于 HTTP 协议,WebSocket 不需要每次通信都重新建立连接,而是在握手成功后保持一个持久连接。这降低了连接建立和关闭的开销,减少了通信的延迟。
  3. 通信高效: 由于 WebSocket 具有全双工通信的特性,客户端和服务器可以在连接建立后同时发送和接收数据,而不需要等待对方的请求或响应。这种实时双向通信的能力使得 WebSocket 在需要高效实时通信的场景中非常有优势,例如在线聊天、实时协作、实时数据推送等。

与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易被屏蔽,能通过各种 HTTP 代理服务器:

  1. 默认端口是80和443,不容易被防火墙屏蔽。
  2. 握手阶段采用http协议,能通过各种http代理服务器和目标服务器进行通信,建立websocket连接后,直接通过已建立的websocket连接进行传输,不再通过http代理服务器。

参考

  1. 【Websocket】基本介绍、原理、特点、使用以及与长短轮询和SSE的区别_了不起的小瑜儿的博客-CSDN博客
  2. ChatGPT
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值