HTTP消息推送原理
来源:互联网 发布:网络同步课堂 编辑:程序博客网 时间:2024/06/07 00:08
这里我们从系统结构的层面来看消息推送系统(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)的结构和原理了:
- 客户端发出一个http长连接请求,然后等待服务器的响应。这个请求是异步的,所以客户端可以继续工作,比如发起其他ajax请求等等。这个时候客户端就是一个待推倒的小萝莉了。
- 服务器接到请求之后,并不立即发送出数据,而是hold住这个connecton。这个处理是非阻塞的,所以服务器可以继续处理其他请求。
- 在某个时刻,比如服务器有新数据了,服务器再主动把这个消息推送出去,即通过之前建立好的连接将数据推送给客户端。
- 客户端收到返回。这个时候就可以处理数据,然后再次发起新的长连接。
基本原理就是这么简单。
原文转载于https://www.pureweber.com/article/push-server-principle/
- HTTP消息推送原理
- iphone消息推送原理
- iOS 消息推送原理
- iOS 消息推送原理
- IOS消息推送原理
- IOS消息推送原理
- iOS 消息推送原理
- iOS 消息推送原理
- 消息推送的原理
- 消息推送原理
- 消息推送机制原理
- Android 消息推送以及推送原理
- 消息推送(push原理)
- iOS 推送消息的原理
- (iOS消息推送原理) 详情
- Android的消息推送系列之消息推送原理
- ios消息推送机制原理与实现
- IOS 消息推送原理及其实现
- iOS开发对AFNetworking3.0的二次封装
- HTTP协议 (2)了解请求报文
- hdu3652 B-number(数位dp)
- UFLDL 笔记 05 自编码训练结果展示 Visualizing a Trained Autoencoder
- mac上安装git
- HTTP消息推送原理
- PostgreSQL之Array_to_String用法
- MIPS-单周期CPU设计
- Mac OS X中配置Apache
- hihocode 1014 Trie树
- 嵌入式软件调试方法
- 剑指Offer——替换空格
- 如何消灭inline元素换行产生的空白
- securecrt使用vbs脚本向多个tabs窗口发送带变量的命令