当前位置: 首页 > news >正文

nginx_Nchan调试

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Nchan作为Nginx web服务器的一个模块,实现了发布/订阅服务器。我这里的调试通过HTTP POST请求发布消息,通过长轮训来订阅消息。(还有其他的发布、订阅的方式,比如websocket。)

1、  下载nginx源码http://nginx.org/并解压;

2、  下载Nchan源码https://nchan.slact.net并解压;

3、  进入nginx源码的根目录,运行./config –add-module=”Nchan源码的根目录”;

4、  运行 make 和 make install;

5、  编译成功的nginx一般在/usr/local/nginx文件夹;

6、  配置nginx和Nchan,编辑/usr/local/nginx/conf/nginx.conf文件:

http {
	server {
		listen       80;

		location = /sub {
			nchan_subscriber;
			nchan_channel_id foobar;
		}

		location = /pub {
			nchan_publisher;
			nchan_channel_id foobar;
		}
	}
}
  • 发布对应的url是/pub,主题是foobar,使用post方法进行发布;
  • l使用get方法访问/pub得到目前的主题或通道信息,包括有几个订阅者,共发布了几条消息等;
  • 订阅对应的url是/sub,主题是foobar,使用get方法进行订阅。

7、  配置参数化主题

http {
	server {
		listen       80;

		location = /sub {
			nchan_subscriber;
			nchan_channel_id $arg_id;
		}

		location = /pub {
			nchan_publisher;
			nchan_channel_id $arg_id;
		}
	}
}

订阅和发布的url现在分别为/sub?id=…、/pub?id=… 其中id作为订阅和发布的主题。

8、  长轮训的方式订阅的http get方法需要配置Last-Modified和If-None-Match头来控制接收的消息,如果没有添加这两个头则默认发送主题中的第一条消息,如果想接收最新的消息,则需要配置nchan_subscriber_first_message:

http {
	server {
		listen       80;

		location = /sub {
			nchan_subscriber;
			nchan_subscriber_first_message newest;
			nchan_channel_id $arg_id;
		}

		location = /pub {
			nchan_publisher;
			nchan_channel_id $arg_id;
		}
	}
}

 

转载于:https://my.oschina.net/u/2453016/blog/713653

相关文章:

  • 小程序兼容iphoneX(齐刘海)代码,mpvue的写法
  • java.util.ConcurrentModificationException
  • 面试汇总——社招算法题篇
  • Express开发性能优化
  • One Class SVM, SVDD(Support Vector Domain Description)(转)
  • 直接在docker下体验强大的构建平台Quickbuild
  • 聊聊G1 GC的String Deduplication
  • 反向代理
  • 在Spring Boot程序中上传和下载文件
  • Javascript 如何生成Less和Js的Source map
  • MySQL索引底层实现原理
  • 基础篇-脚本题(2)
  • 通过 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)
  • 新建Salesforce的自定义对象和自定义字段
  • js-方法
  • [译] 怎样写一个基础的编译器
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 78. Subsets
  • If…else
  • java8 Stream Pipelines 浅析
  • java小心机(3)| 浅析finalize()
  • LeetCode29.两数相除 JavaScript
  • MQ框架的比较
  • Node + FFmpeg 实现Canvas动画导出视频
  • python大佬养成计划----difflib模块
  • Python实现BT种子转化为磁力链接【实战】
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SSH 免密登录
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 大数据与云计算学习:数据分析(二)
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 学习ES6 变量的解构赋值
  • ​configparser --- 配置文件解析器​
  • # Maven错误Error executing Maven
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #{} 和 ${}区别
  • #100天计划# 2013年9月29日
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (007)XHTML文档之标题——h1~h6
  • (2.2w字)前端单元测试之Jest详解篇
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (ZT)薛涌:谈贫说富
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (生成器)yield与(迭代器)generator
  • (转)平衡树
  • (转载)Linux网络编程入门
  • .NET Core中Emit的使用
  • .NET Micro Framework初体验
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET Reactor简单使用教程
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • @31省区市高考时间表来了,祝考试成功