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上,并向订阅者中转 
  • 相关阅读:
    JDK 1.7.0 安装后,如何配置,以及如何打开JAR文件
    C++中的内存!(转载)堆 栈 全局/static变量区 常量区
    学习.net应该知道什么
    SQL Group By
    编码
    ASP生成静态Html文件技术杂谈
    如何写出优秀的ASP应用
    DropDownList的绑定方法
    如何提高WEB程序的效率
    什么才是提高ASP性能的最佳选择
  • 原文地址:https://www.cnblogs.com/xinyaoxp/p/3423539.html
Copyright © 2011-2022 走看看