前端面试之实时通讯你为什么选择WebSocket?

本文探讨了实时通讯的四种常见方案:短轮询、Comet-AJAX长轮询、SSE(服务器推送事件)和WebSocket。短轮询和Comet在浏览器兼容性上有优势,但资源消耗高。SSE基于HTTP,易于实施,但效率低于WebSocket。WebSocket提供双向实时通讯,性能最优,但需要项目改造且不兼容低版本浏览器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我会介绍几种解决实时通讯的方案然后介绍各自的优缺点最后对比

基于web前端,存在一下几种可实现即时通讯的方式:

  • 短轮询(历史方案)
  • Comet-ajax长轮询(历史方案)
  • SSE
  • WebSocket(主流)

 

短轮询 

就是客户端定时发送请求,获取服务器上的最新数据,不是真正的即时通讯,但一定程度上可以模拟即时通讯的效果.

优点:浏览器兼容性好,实现简单

缺点:实时性不高,资源消耗高,存在较多无用请求,影响性能

Comet-ajax长轮询

  • 游览器发出XMLHttpRequest请求,服务器接收到请求后,会阻塞请求直到有数据或超时才会返回
  • 游览器js在处理返回信息(有数据或者超时)后再次发出请求,服务器收到请求后,会再次阻塞到有数据或者超时

优点:游览器兼容性好,不存在无用请求

缺点:服务器压力大(维护长连接会消耗较多服务器资源) 

SSE

服务器推送事件,基于HTTP协议,允许服务端向客户端推送新数据的HTML5技术

(HTTP协议是无法做到服务器向客户端推送消息的,SSE做了一些处理)

优点:基于HTTP,无序太多改造就能用,比WebSocket 要简单一点

缺点:基于文本传输,效率没有WebSocket高,基于HTTP协议,不是严格的双向通讯

 WebSocket(目前主流)

基于TCP协议的全新独立的协议,作用是在服务器端和客户端之间建立实时的双向通讯

WebSocket协议与HTTP协议保持兼容,但是布瑞融入HTTP协议,仅作为HTML5的一部分

优点:真正意义上的双向实时通讯,性能好.延迟底

缺点:由于独立于HTTP的协议,因此要使用的话需要对项目改造

使用复杂,需要引用成熟的库(如:Socket-io);并且无法兼容低版本的游览器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值