zoukankan      html  css  js  c++  java
  • ngx-push-stream模块源码学习(一)——序言

    一、概述 
        与传统的request-response的web应用模式不同,comet是一种长连接(long-held)的应用模式,从而允许服务端主动向客户端推送数据。 
        主流的comet技术主要有以下两个分支: 

    分类 描述
    streaming 客户端和服务器端保持一种长连接
    long polling 客户端与服务器端建立连接后,以轮询方式等待服务器端数据或事件。收到服务端数据或连接超时后,断开连接并迅速再次建立连接


        ngx-push-stream模块是ngx的一个第三方扩展模块,可以同时支持stream和long polling两种comet技术,基于该模块可以较容易使用nginx server push。 
        
    二、模型 
        一种典型的模型如图所示: 
     
        基于ngx+ngx-push-stream模块可以实现在nginx服务器上扩展出两类终端:一种用于发布,一种用于订阅。订阅者以stream或long polling的方式向nginx channel请求数据;同时,发布者可可将信息以post的方式发送到nginx channel。ngx-push-stream模块则完成二者之间的信息缓存和中转。 
    三、总体流程 
        简单来讲,整个发布订阅过程完成两项工作: 

    • 向服务器推送MSG,服务端暂存MSG
    • 服务器端向订阅者推送MSG


        为了完成上面两项工作,通道(channel)应运而生。它是发布者和订阅者之间的桥梁。发布者将MSG以post的形式发送到某个通道上,订阅者则以GET的方式从channle获取MSG。由此channel的重要性可见一斑。 
         通道的发布者一侧,支持http POST(发布信息)、DELETE(删除channel)和GET(获取channel信息)三种请求;订阅者一侧则只接受GET请求以获取最新MSG。具体来讲,发布者一侧主要完成以下三种功能: 

      • 获取channle信息
      •     订阅者数目、缓存信息数目、已发送信息数目等等。。
      • 删除channel
      •     清空缓存的信息、通知所有的订阅者、释放channel
      • 发布信息
      •     将信息发布到channel上,并向订阅者中转 
  • 相关阅读:
    SSH深度历险(五) 深入浅出-----IOC AND AOP
    Hbuilder X下载及安装教程
    如何用Prometheus监控十万container的Kubernetes集群
    使用并部署Flutter Web的步骤实例
    回顾 Android 11 中的存储机制更新
    移动端UI一致性解决方案
    使用 tail 结合 grep 查找日志关键字并高亮及显示所在行上下文
    Nginx PHP 报504 Gateway time-out错误的解决方法
    SPSS 24 安装详细教程及下载
    CoRL 2020奖项公布,斯坦福获最佳论文奖,华为等摘得最佳系统论文奖
  • 原文地址:https://www.cnblogs.com/xinyaoxp/p/3423539.html
Copyright © 2011-2022 走看看