HTTP消息推送原理

这里我们从系统结构的层面来看消息推送系统(Push Server)的基本原理。

首先需要了解几个基本的概念:

HTTP长连接

翻译自http keep-alive connection和http persistent connection,又叫http connection reuse,网上也有反过来翻译成http long connection。

下面这个图来自wikipedia,讲解了http长连接是在一个TCP连接的基础之上,发送多个HTTP请求以及接收多个HTTP响应,这是为了避免每一次请求都去打开一个新的连接。在HTTP 1.1标准中,所有的请求都认为是长连接。


在这里的消息推送系统中,HTTP长连接的作用就是向服务器发送请求,然后一直等待服务器的返回数据。这就相当于客户端在“监听”服务器了,可以随时接收来自服务器的消息。OK,lolita is ready to be pushed!

同步与异步

同步:IO操作将导致请求进程阻塞,直到IO操作完成。也就是说客户端在发送请求后,必须得在服务端有回应后才发送下一个请求。

异步:IO操作不导致请求进程阻塞。也就是说客户端在发送请求后,不必等待服务端的回应就可以发送下一个请求。

同步与异步说的是客户端与服务器端之间的一种通信方式。

阻塞与非阻塞

阻塞:服务器端的线程或者进程没有处理完数据的时候,不会返回,线程或者进程回被挂起,不再响应其他请求。

非阻塞:服务器端在没有处理完的时候,会立即返回,不会挂起线程或者进程,可以继续响应其他请求。

阻塞与非阻塞说的是服务器端对请求的处理方式。

在消息推送系统中,客户端+服务器端一起,使用的是异步非阻塞。

消息推送系统(Push Server)的结构和原理

好了,接下来是就是消息推送系统(Push Server)的结构和原理了:


  1. 客户端发出一个http长连接请求,然后等待服务器的响应。这个请求是异步的,所以客户端可以继续工作,比如发起其他ajax请求等等。这个时候客户端就是一个待推倒的小萝莉了。
  2. 服务器接到请求之后,并不立即发送出数据,而是hold住这个connecton。这个处理是非阻塞的,所以服务器可以继续处理其他请求。
  3. 在某个时刻,比如服务器有新数据了,服务器再主动把这个消息推送出去,即通过之前建立好的连接将数据推送给客户端。
  4. 客户端收到返回。这个时候就可以处理数据,然后再次发起新的长连接。

基本原理就是这么简单。


原文转载于https://www.pureweber.com/article/push-server-principle/


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebSocket 消息推送基于 HTTP 和 TCP 协议,它允许服务器主动向客户端推送消息,实现了双向通信。下面是 WebSocket 消息推送原理: 1. 客户端发起 WebSocket 连接请求:客户端通过发送一个特殊的 HTTP 请求头部信息(包含 Upgrade: websocket 字段),来请求与服务器建立 WebSocket 连接。 2. 服务器响应 WebSocket 连接请求:当服务器收到客户端的 WebSocket 连接请求后,会以 HTTP 101 状态码响应客户端,并携带一些特殊的响应头部信息(包含 Upgrade: websocket 字段)。这样,服务器和客户端就建立了一个双向通信的连接。 3. 双方通过 WebSocket 连接进行通信:一旦 WebSocket 连接建立成功,双方可以通过该连接进行实时的双向通信,可以发送文本、二进制数据等。 4. 服务器主动推送消息:与传统的 HTTP 请求不同,WebSocket 允许服务器主动向客户端推送消息,而不需要等待客户端发起请求。服务器可以随时将消息发送给客户端,客户端收到后可以及时处理。 5. 客户端接收消息并处理:客户端通过监听 WebSocket 连接上的消息事件,一旦收到服务器推送消息,就可以进行相应的处理,例如更新页面内容、展示通知等。 需要注意的是,WebSocket 基于 TCP 协议,具有较低的延迟和较高的效率,适用于实时通信场景。同时,WebSocket 需要服务器和客户端都支持,并且需要一定的网络带宽支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值