`
godlovesdog
  • 浏览: 99456 次
社区版块
存档分类
最新评论

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上,并向订阅者中转
  • 大小: 23.6 KB
  • 大小: 39.6 KB
  • 大小: 16.6 KB
分享到:
评论

相关推荐

    ngx-datatable-master.zip

    ngx-datatable 是一个基于 Angular 的高性能数据表格组件库,它为开发者提供了丰富的功能来展示、操作和定制数据。ngx-datatable-master.zip 文件很可能是这个库的源代码压缩包,包含了项目的所有源码、示例、文档等...

    Angular-ngx-sharebuttons.zip

    Angular-ngx-sharebuttons.zip,角共享按钮角共享按钮,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是全面解决开发人员的web应用程序工作流。

    ngx-datatable.zip

    ngx-datatable是一个流行的Angular组件库,专为构建高效的数据表格而设计。在现代Web应用程序中,数据展示和操作是常见的需求,ngx-datatable提供了一系列功能强大的特性,帮助开发者轻松实现这些功能。 首先,ngx-...

    ngx-pivot-table-源码.rar

    通过深入研究"ngx-pivot-table-源码.zip"中的源代码,开发者可以学习到如何在Angular中构建组件,如何处理数据,以及如何实现交互式表格的功能。这对于提升Angular技能和理解组件化开发有很大的帮助。

    Angular-ngx-device-detector.zip

    Angular-ngx-device-detector.zip,用于检测设备、操作系统和浏览器详细信息的Angular5 库。NGX-device-detector,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。...

    Angular-ngx-ui-loader.zip

    Angular-ngx-ui-loader.zip,多个加载器/旋转器和进度条,用于Angular 5、6、7和8 NGX UI加载器,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是...

    ngx-leaflet-draw-源码.rar

    ngx-leaflet-draw 是一个基于 Angular 和 Leaflet 的库,用于在地图上添加绘图工具。这个源码压缩包 `ngx-leaflet-draw-源码.zip` 包含了实现这个功能的所有源代码,这对于想要深入理解其工作原理或者想要对其进行...

    generator-ngx-rocket, 可以扩展 Angular 6 + 企业级项目生成器.zip

    **generator-ngx-rocket** 是一个专为 Angular 6 及以上版本设计的企业级项目生成器,它旨在加速和简化大型复杂项目的初始化过程。通过这个工具,开发者可以快速搭建符合企业标准的基础架构,从而减少重复劳动,提高...

    ngx-pinch-zoom:模块提供了使用触摸屏上的手势进行图像缩放和定位的功能

    该模块提供了使用触摸屏上的手势进行图像放大,缩小和定位的机会。 实时演示和源代码示例可以在找到。 :microscope: 有助于使Pinch缩放更好。 安装 安装npm软件包。 npm i ngx-pinch-zoom 导入模块: import ...

    Angular-ngx-gallery.zip

    Angular-ngx-gallery.zip,角形画廊、旋转木马和灯箱角形画廊,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是全面解决开发人员的web应用程序...

    ngx-tethys:Angular中快速可靠的Worktile Design组件

    ngx-特提斯 基于Worktile Design和Angular的UI组件。 笔记: 这个仓库现在只是公开的,它离开源水平还很远,我们不建议在生产环境中使用它。 我们不保证不会发生重大变化,仅适用于和 入门 安装 跑步 ng add ngx-...

    generator-ngx-rocket, 可以扩展 Angular 6 企业级项目生成器.zip

    **generator-ngx-rocket** 是一个专为 Angular 6 设计的企业级项目生成器,它旨在简化企业级应用的初始化过程,提供了一种快速搭建、可扩展的框架。这个工具基于 Yeoman,一个广泛使用的代码生成器,允许开发者...

    Angular-ngx-api-utils.zip

    Angular-ngx-api-utils.zip,ngx api实用程序是一个精简的实用程序和帮助程序库,用于快速将任何httpapi(rest、ajax和任何其他)与angular.ngx-api-utils集成,Angularjs于2016年发布,是Angularjs的重写版。...

    Angular-ngx-slick.zip

    Angular-ngx-slick.zip,Angular6 Slick Pluginngx Slick包装纸,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是全面解决开发人员的web应用程序...

    ngx-socket-io:Angular的Socket.IO模块

    ngx-socket-io 模块 安装 npm install ngx-socket-io 如何使用 导入和配置SocketIoModule import { SocketIoModule , SocketIoConfig } from 'ngx-socket-io' ; const config : SocketIoConfig = { url : '...

    Angular-ngx-validators.zip

    Angular-ngx-validators.zip,角度2 NGX验证程序的验证程序库,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是全面解决开发人员的web应用程序...

    ngx-loading-bar:Angular的自动页面加载进度栏

    @ ngx-loading-bar Angular应用程序(http,http-客户端和路由器)的零配置全自动加载条。 配套 在路线之间导航时显示加载栏。 -显示@angular/common/http请求的进度。 手动管理进度条的核心模块。 演示版 在线...

    Angular-ngx-ueditor.zip

    Angular-ngx-ueditor.zip,百度编辑角,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是全面解决开发人员的web应用程序工作流。

    Angular-ngx-scrollspy.zip

    Angular-ngx-scrollspy.zip,Angular ScrollSpy服务您可以使用Angular2服务从窗口或任何其他可滚动元素监视滚动事件。,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入...

    ngx-bootstrap-development

    ngx-bootstrap-development O

Global site tag (gtag.js) - Google Analytics