即时通讯--短轮询、长轮询、sse、websorket

前言

实现”实时通讯“的功能,在以前来说,一般都是基于HTTP请求的,但HTTP是无状态请求,每次连接完毕,都要重新建立连接,才能实现通信,服务器端不能主动通讯,所以会造成信息延迟和性能问题。
1、性能:http协议一次请求只能一次响应,每次请求客户端和服务器都需要解析请求头信息,效率低下。
2、延时:短轮询有延时问题。
3、服务端不能主动推送。

短轮询(Polling)

客户端每隔一段时间都给服务器发送请求,询问是否有新的消息

优点
1、无兼容性问题
2、不用任何新的api

缺点
1、有延时:时间间隔太短,服务器压力大,间隔时间长延时太长
2、服务器不能主动推送

长轮询(Long Polling)

客户端发起长轮询,如果服务端的数据没有发生变更,会 hold 住请求,直到服务端的数据发生变化,或者等待一定时间超时才会返回。返回后,客户端又会立即再次发起下一次长轮询。长轮询解决了短轮询不能实时和连接

优点
1、无兼容性问题
2、可以实时获取消息。
3、对消息变化的轮询由客户端变成了服务器,而且只有连接断开后客户端才会再次请求,大大减少了HTTP次数。

缺点
1、服务器hold连接会消耗资源

sse

服务器使用流信息向客户端推送信息。严格地说,http 协议无法做到服务器主动推送信息。但是,有一种变通方法,就是服务器向客户端声明,接下来要发送的是流信息。也就是说,发送的不是一次性的数据包,而是一个数据流,会连续不断地发送过来。这时,客户端不会关闭连接,会一直等着服务器发过来的新的数据流,视频播放就是这样的例子。

优点
1、无兼容性问题
2、SSE 默认支持断线重连
3、可以实现服务器向客户端推送消息

缺点
1、一般只用来传送文本,二进制数据需要编码后传送

websorket

  1. websorket是HTML5新特性,是基于TCP协议的应用层协议,也是全双工通讯协议。
  2. 建立连接时的握手阶段采用的是HTTP,默认端口也是80或443。
  3. 协议标识是ws,加密的是wss(有SSL证书),连接时的服务器网址就是 URL。
  4. 连接的时候不受同源跨域限制,客户端可以与任意服务器通信。
  5. 可以发送文本,也可以发送二进制数据。

优点
1、双向通信,客户端和服务器端可以互发消息
2、建立一次TCP连接,就可以实现通信
3、不受同源跨域限制

缺点
1、有兼容性问题

参考链接如下

https://blog.csdn.net/qq_54773998/article/details/123863493?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168586480816800192249437%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=168586480816800192249437&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-2-123863493-null-null.142v88insert_down28v1,239v2insert_chatgpt&utm_term=websocket&spm=1018.2226.3001.4187

https://blog.csdn.net/wecloud1314/article/details/126158204

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值