数据推送方式- polling vs Websocket vs SSE

我们可以使用以下三种方式来创建一个实时的web应用程序

  1. Long polling or short polling(client pull)
  2. WebSocket(server push)
  3. Server-Sent Events(server push)

client pull: 客户端以一定的间隔来请求server来获取更新数据

server push:
服务器主动向客户端推送更新

long polling

这里简单说一下 short polling 和 long polling 的区别, poll是客户端代码中每隔一段时间访问一次server(for 循环访问)long polling 是用 Transfer-Encoding: chunked (也是 http comet)的方式 设置一个超长的超时时间,每当服务端有更新则用这个链接 一个chunk 一个chunk 返回给客户端数据。

http comet 除了使用long polling 还用 iframe

Using WebSockets

websocket 本质上就是一个贯穿 client & server的一个链接,websocket协议在一条tcp链接上提供了全双工的通信信道。

RFC 6455 上注明,websocket 是一个被设计在http 80 & 433 端口上的并且兼容http代理和中介的协议, 这使得 websocket 基本上完全兼容http协议, 为了实现完全兼容性,websocket 握手协议使用http 的 Upgrade 请求头 去将http协议换成websocket协议,

http 协议 和 websocket 协议都是建立在tcp协议之上的 七层协议

client:

$(function () {
   
    window.Websocket = window.Websocket || window.MozWebSocket;
    const connection = new WebSocket('ws://localhost:8080/githubEvents');
    connection.onopen = function(){
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值