• 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上,并向订阅者中转 
  • 相关阅读:
    C#模拟POST表单提交 WebClient
    视频广告屏蔽器(附下载地址)
    SQL Server 不同数据库导入指定数据解决方案
    WinRAR(WinZip)压缩与解压实现(C#版Window平台)
    Visual Studio 扩展包(.vsix)制作
    ORM for Net主流框架汇总与效率测试
    文件删除小助手
    C# 控制台应用程序输出颜色字体[更正版]
    IE与IE内核浏览器的那点事
    where in的sql语句按照指定ID进行排序的解决方法
  • 原文地址:https://www.cnblogs.com/xinyaoxp/p/3423539.html
Copyright © 2020-2023  润新知