这里我们从系统结构的层面来看消息推送系统(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/

HTTP消息推送原理相关推荐

  1. iOS 消息推送原理及实现总结

    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图: 1. Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Prov ...

  2. iOS 消息推送原理及实现Demo

    为什么80%的码农都做不了架构师?>>>    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供 ...

  3. php app 推送原理,微信公众号开发的那点事第一篇——消息推送原理

    微信公众平台从诞生开始到现在已经积累了海量的公众号,这其中有大量的个人运营者.为了让公众号更好滴为粉丝们服务,微信官方提供了很多接口,使用这些接口来丰富公众号的功能对于有些个人运营者来说可能并不熟悉. ...

  4. MobPush的消息推送原理是什么?

    MobPush智能多通道推送系统作为Mob重磅推出的一款消息推送明星产品,目前已在电商.游戏.新零售.金融等行业广泛应用,它支持多种推送消息类型,全链路数据统计分析助力开发者用户增长,毫秒级触达用户, ...

  5. 移动互联网消息推送原理:长连接+心跳机制(MQTT协议)

    互联网推送消息的方式很常见,特别是移动互联网上,手机每天都能收到好多推送消息,经过研究发现,这些推送服务的原理都是维护一个长连接(要不不可能达到实时效果),但普通的socket连接对服务器的消耗太大了 ...

  6. IOS Push消息推送原理及应用

    Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple Pu ...

  7. Android消息推送原理

    出处:https://www.jianshu.com/p/969e83d10680 定义 在用户未打开App时,App主动向用户推送服务器最新消息.如下图: 作用 产品的角度:功能需要,比如说资讯类产 ...

  8. 苹果服务器消息转发,iOS 消息推送原理及简单实现

    先说推送的原理,不废话先上图: 875923-20160127202521379-327347831.png 从图中可以很清楚的看出来推送的原理主要分为以下几步: 1.由App向iOS设备发送一个注册 ...

  9. 苹果的消息是从服务器接收数据,iOS 消息推送原理及简单实现

    从图中可以很清楚的看出来推送的原理主要分为以下几步: 1.由App向iOS设备发送一个注册通知,用户需要同意系统发送推送. 2.iOS向APNs远程推送服务器发送App的Bundle Id和设备的UD ...

  10. iphone消息推送原理

    转自:http://xiaolife.com/wordpress/an-introduce-to-iphone-push/ 第一部分:Push原理 (以下绝大多数内容参考自.图片来自iPhone OS ...

最新文章

  1. CRF算法中辅助概念 团 极大团 最大团
  2. linux下载哪个python版本-Linux下升级安装Python-3.6.2版本
  3. 01-VMware-workstation14安装
  4. Day1 字符串格式化
  5. 利用 Git OpenSSH 查看/生成 本机 ssh 公钥
  6. TZOJ--5480: 孤衾易暖 // POJ--3735 Training little cats (矩阵快速幂)
  7. antimalware可以关闭吗_“对方正在输入...”什么时候会出现?可以关闭吗?
  8. 小米否认“造车”;微软中国回应关闭实体直营店;Angular 10 发布 | 极客头条...
  9. dfs dtft dft fft
  10. linux getopt_long函数,新手疑问:getopt_long()重入问题
  11. Linux 之 CentOS 7.2 安装 Java JDK
  12. [乐意黎原创] 送李愿归盘谷序
  13. CleanMyMac4.12最新版mac系统内存空间清理教程
  14. 什么是pisa测试_PISA测试很专业,但对理解什么是教育很重要
  15. easypoi导入excel实践方法:
  16. 华为鸿蒙新机是哪款,华为新机来了!预装鸿蒙 OS,搭载麒麟 9000!
  17. HTML+CSS制作人物介绍卡片效果
  18. 【旅游类APP源码】开发者案例开源,走过路过不可错过!
  19. error: %preun(mysql-community-server-5.7.36-1.el6.x86_64) scriptlet failed
  20. xman的思维导图快捷键_MindMaster 思维导图快捷键

热门文章

  1. 基于weber的齿轮啮合刚度计算
  2. Apizza-快如何进行API开发进度管理
  3. 你不知道流量宝的神操作就能免费增加20万网站PV浏览量
  4. 制作网页版Excel表
  5. 华为盒子联网后显示无法连接服务器,【当贝市场】华为盒子连上无线后不能上网怎么办?...
  6. matlab 积分进阶教程,matlab进阶微积分篇6
  7. 鸟哥的Linux私房菜学习笔记(三)
  8. QQ 音乐加密音乐文件格式转换并附加专辑图片教程
  9. GooFlow获取节点/线信息和自定义节点属性
  10. ssm校园在线点餐系统源码(含数据库)