一.概述 push stream模块允许三种模式的订阅者: longpolling:每收到服务端响应数据即断开连接然后迅速重连,连接耗时可以忽略 stream:与服务端保持长连接,持续不断的请求->响应 polling:以轮询的方式向等待服务端响应(只接受一次数据)——(个人理解) 本文重点说明前两种. 二.流程 上一篇博文中捎带提到了订阅者的销毁时间——发送完MSG后(ngx_http_push_stream_send_response_finalize),本文将详细说明其讲解其诞生过程. 从…
一.概述     发布:发布者将MSG post到某一特定通道上,channel将信息缓存 在说明发布流程之前有必要说明下channel和msg的数据结构. 二.数据结构 2.1 MSG     发布时,模块先将消息转化为ngx_http_push_stream_msg_t的数据结构进行存储. // message queue typedef struct { ngx_queue_t                     queue; // this MUST be first time_t …
本文重点介绍push stream模块的构成,至于nginx如何启动.维护该模块不会详细阐述,以后有时间会做详细阐述. 一.模块定义 1.1.  模块配置 通用nginx模块的配置struct有三种,分别是main,server和location.本模块会涉及到main和location两个域的配置.名称分别为:ngx_http_push_stream_main_conf_t和ngx_http_push_stream_loc_conf_t. 具体模块配置请参考nginx官网:http://wik…
1.定时器         采用nginx自身的定时器管理机制,具体细节待学习过nginx源码后加以补充 2.channel的生成周期 (0).初始(诞生)         发布.订阅均有可能产生channel 发布:向channel以post的形式发布消息时,如果不存在channel则产生 订阅:模块配置允许订阅产生channel的情况下,如果向一个不存在的channel上订阅时则产生 channel自诞生之日期就是在无奈的等死...只要channel被使用一次(发布.订阅)则其寿命被延长一次…
一.概述     与传统的request-response的web应用模式不同,comet是一种长连接(long-held)的应用模式,从而允许服务端主动向客户端推送数据.     主流的comet技术主要有以下两个分支: 分类 描述 streaming 客户端和服务器端保持一种长连接 long polling 客户端与服务器端建立连接后,以轮询方式等待服务器端数据或事件.收到服务端数据或连接超时后,断开连接并迅速再次建立连接 ngx-push-stream模块是ngx的一个第三方扩展模块,可以…
// Sorrow.X --- 添加注释,注释纯属个人理解 /** * slice变量 引用 数组的 slice方法 */ var slice = Array.prototype.slice; /** * 抛出 `co`. */ // module.exports = co['default'] = co.co = co; /** * Wrap the given generator `fn` into a * function that returns a promise. * This is…
一.模块规范 说到模块化加载,就不得先说一说模块规范.模块规范是用来约束每个模块,让其必须按照一定的格式编写.AMD,CMD,CommonJS 是目前最常用的三种模块化书写规范.  1.AMD(Asynchronous Module Definition):异步模块定义,所谓异步是指模块和模块的依赖可以被异步加载,他们的加载不会影响它后面语句的运行.有效避免了采用同步加载方式中导致的页面假死现象.AMD代表:RequireJS.   它主要有两个接口:define 和 require.defin…
文章提纲: 第一部分:介绍模块规范及之间区别 第二部分:以 node.js 实现模块化规范 源码,深入学习. 一.模块规范 说到模块化加载,就不得先说一说模块规范.模块规范是用来约束每个模块,让其必须按照一定的格式编写.AMD,CMD,CommonJS 是目前最常用的三种模块化书写规范.  1.AMD(Asynchronous Module Definition):异步模块定义,所谓异步是指模块和模块的依赖可以被异步加载,他们的加载不会影响它后面语句的运行.有效避免了采用同步加载方式中导致的页面…
最近在跟着一个大佬学习Hadoop底层源码及架构等知识点,觉得有必要记录下来这个学习过程.想到了这个废弃已久的blog账号,决定重新开始更新. 主要分以下几步来进行源码学习: 一.搭建源码阅读环境二.源码项目结构概览及hdfs源码包结构简介三.NameNode介绍 第一步,搭建源码阅读环境. 把Hadoop源码包导入到开发工具,eclipse或者idea都行.这里我的环境是mac os,使用的工具是idea,Hadoop版本为2.6.5. 首先,解压缩Hadoop源码包,可以选择移动解压之后的源…
依赖注入起源于实现控制反转的典型框架Spring框架,用来削减计算机程序的耦合问题.简单来说,在定义方法的时候,方法所依赖的对象就被隐性的注入到该方法中,在方法中可以直接使用,而不需要在执行该函数的时候再参数中添加这些依赖对象. 理解很简单,我们以一个例子说明 var $name = "chua",$age = 26; function myInfo($name,$age){ alert($name + ":" + $age ); }; //普通情况下应该执行 my…