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

ngx-push-stream模块源码学习(四)——订阅

 
阅读更多
一、概述
push stream模块允许三种模式的订阅者:
  • longpolling:每收到服务端响应数据即断开连接然后迅速重连,连接耗时可以忽略
  • stream:与服务端保持长连接,持续不断的请求->响应
  • polling:以轮询的方式向等待服务端响应(只接受一次数据)——(个人理解)

本文重点说明前两种。
二、流程
上一篇博文中捎带提到了订阅者的销毁时间——发送完MSG后(ngx_http_push_stream_send_response_finalize),本文将详细说明其讲解其诞生过程。





从上述流程可以看出模块对longpolling和stream两种请求的处理方式有相同之处,也有少许不同。
相同之处主要体现在当所订阅的channel中不存在消息时,都执行下述流程:
  • 准备连接处于保存状态(subscriber_prepare_request_to_keep_connected)

  •        可以看出,在此流程中订阅者诞生
  • 发送相同的响应头
  • 注册订阅者
  •         将订阅者添加到ngx worker的订阅者队列,启动ping定时器和disconnect定时器等
  • 将订阅者添加到所订阅的channel上

       
ngx_queue_insert_tail(&channel->workers_with_subscribers.queue, &worker_sentinel->queue);
        


不同的是当channel中存在消息时,stream模式仍执行上述流程(建立长连接)然后获取MSG,而longpolling则直接从channel中取得MSG。

  • 大小: 23.2 KB
  • 大小: 65.8 KB
  • 大小: 75 KB
分享到:
评论

相关推荐

    Angular-ngx-sharebuttons.zip

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

    ngx-datatable-master.zip

    ngx-datatable-master.zip 文件很可能是这个库的源代码压缩包,包含了项目的所有源码、示例、文档等内容。在这个库中,你可以深入理解如何在 Angular 应用中高效地处理和展示大量数据。 首先,`ngx` 前缀是 Angular...

    ngx-datatable.zip

    关于压缩包"ngx-datatable.zip",其中包含了ngx-datatable的源码、示例、文档和其他相关资源。解压后,你可以研究源码学习其内部实现,查看示例了解如何在自己的项目中使用,查阅文档解决遇到的问题。这个压缩包为...

    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-pinch-zoom:模块提供了使用触摸屏上的手势进行图像缩放和定位的功能

    import { PinchZoomModule } from 'ngx-pinch-zoom' ; @ NgModule ( { imports : [ PinchZoomModule ] } ) 用法 使用时,将图像放入容器中。 请注意视口元标记的参数。 如果您使用“捏缩放”,则需要通过输入以下...

    ngx-leaflet-draw-源码.rar

    这个源码压缩包 `ngx-leaflet-draw-源码.zip` 包含了实现这个功能的所有源代码,这对于想要深入理解其工作原理或者想要对其进行自定义开发的开发者来说非常有价值。 Leaflet 是一个轻量级的JavaScript地图库,它...

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

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

    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-...

    Angular-ngx-slick.zip

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

    Angular-ngx-api-utils.zip

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

    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应用程序...

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

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

    Angular-ngx-ueditor.zip

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

    Angular-ngx-auto-unsubscribe.zip

    Angular-ngx-auto-unsubscribe.zip,类装饰器,它将自动从ObservablesAngular取消订阅-为专业人士自动取消订阅,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。...

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

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

    Angular-ngx-scrollspy.zip

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

Global site tag (gtag.js) - Google Analytics