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上,并向订阅者中转 
  • 相关阅读:
    173. Binary Search Tree Iterator
    199. Binary Tree Right Side View
    230. Kth Smallest Element in a BST
    236. Lowest Common Ancestor of a Binary Tree
    337. House Robber III
    449. Serialize and Deserialize BST
    508. Most Frequent Subtree Sum
    513. Find Bottom Left Tree Value
    129. Sum Root to Leaf Numbers
    652. Find Duplicate Subtrees
  • 原文地址:https://www.cnblogs.com/xinyaoxp/p/3423539.html
Copyright © 2011-2022 走看看