Nchan 实时消息ha 配置
下载nginx or openresty 源码同时下载Nchan 源码进行编译打包即可
location 配置
location = /sub {
nchan_subscriber;
nchan_channel_id $arg_id;
nchan_use_redis on; // 关键
}
location = /pub {
nchan_publisher;
nchan_channel_id $arg_id;
nchan_use_redis on; // 关键
}
redis server 配置
nchan_redis_url "redis://127.0.0.1:6379";
lb 配置
server:
server {
listen 8089;
location / {
proxy_pass http://ws;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
upstream:
upstream ws {
server xxxxxx:80 weight=2 max_fails=2 fail_timeout=30s;
server xxxxxxxx:8090 weight=1 max_fails=2 fail_timeout=30s;
}
Nchan 配置:
参考上面的,必须在一台机器
redis cluster 版本的配置
http {
upstream redis_cluster {
nchan_redis_server redis://127.0.0.1:7000;
nchan_redis_server redis://127.0.0.1:7001;
nchan_redis_server redis://127.0.0.1:7002;
# you don't need to specify all the nodes, they will be autodiscovered
# however, it's recommended that you do specify at least a few master nodes.
}
server {
listen 80;
location ~ /sub/(\w+)$ {
nchan_subscriber;
nchan_channel_id $1;
nchan_redis_pass redis_cluster;
}
location ~ /pub/(\w+)$ {
nchan_publisher;
nchan_channel_id $1;
nchan_redis_pass redis_cluster;
}
}
}
// http post data
curl \
-H "Content-type: application/json" \
-d '{"name": "dalong","age":333}' \
'http://xxxxx:8089/pub?id=demo'
// browser recived data
var ws =new WebScoket("ws://xxxxx:8089/sub?id=demo")
ws.onMessage=funciton(data){
console.log(data)
}
127.0.0.1:6379> KEYS *
1) "{channel:/demo}"
2) "{channel:/demo}:msg:1511175437:2"
3) "{channel:/demo}:msg:1511175436:2"
4) "{channel:/demo}:msg:1511175435:0"
5) "{channel:/demo}:msg:1511175437:0"
6) "{channel:/demo}:messages"
7) "{channel:/demo}:msg:1511175436:0"
8) "{channel:/demo}:msg:1511175437:3"
9) "{channel:/demo}:msg:1511175424:1"
10) "{channel:/demo}:msg:1511175437:1"
11) "{channel:/demo}:msg:1511175436:3"
12) "{channel:/demo}:msg:1511175436:1"
https://nchan.io/#channel-multiplexing
https://nchan.io/documents/nginxconf2016-slides.pdf(很不错的分享)
Nchan 实时消息ha 配置的更多相关文章
- Nchan 实时消息 安全配置
备注: 即时消息的安全对于我们来说是比较重要的,作者在设计Nchan 的时候已经考虑了 a. nchan_authorize_request (Hooks and Callbacks)可以集成 ...
- Nchan 实时消息内置变量
以下参考官方文档: $nchan_channel_idThe channel id extracted from a publisher or subscriber location requ ...
- 实时消息平台NSQ的特性
NSQ是GO语言开发的可用于大规模系统中的实时消息服务,但是和RabbitMQ等相比,它具有什么特色,什么场景下选择NSQ呢? NSQ的自身特色很明显,最主要的优势在如下三个方面: 1,性能.在多个著 ...
- NSQ:分布式的实时消息平台
NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub,其当前最新版本是0.3.1版.NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其 ...
- 开源实时消息推送系统 MPush
系统介绍 mpush,是一款开源的实时消息推送系统,采用java语言开发,服务端采用模块化设计,具有协议简洁,传输安全,接口流畅,实时高效,扩展性强,可配置化,部署方便,监控完善等特点.同时也是少有的 ...
- Centrifugo 语言无关的实时消息服务
Centrifugo 语言无关的实时消息服务,基于golang编写,提供了websocket 以及sockjs 的兼容处理,使用上很简单 同时也支持基于redis的扩展,以下是一个简单的运行测试 环境 ...
- CentOS7安装CDH 第七章:CDH集群Hadoop的HA配置
相关文章链接 CentOS7安装CDH 第一章:CentOS7系统安装 CentOS7安装CDH 第二章:CentOS7各个软件安装和启动 CentOS7安装CDH 第三章:CDH中的问题和解决方法 ...
- 未读消息(小红点),前端与 RabbitMQ实时消息推送实践,贼简单~
前几天粉丝群里有个小伙伴问过:web 页面的未读消息(小红点)怎么实现比较简单,刚好本周手头有类似的开发任务,索性就整理出来供小伙伴们参考,没准哪天就能用得上呢. 之前在 <springboot ...
- 我有 7种 实现web实时消息推送的方案,7种!
技术交流,公众号:程序员小富 大家好,我是小富- 我有一个朋友- 做了一个小破站,现在要实现一个站内信web消息推送的功能,对,就是下图这个小红点,一个很常用的功能. 不过他还没想好用什么方式做,这里 ...
随机推荐
- svn 教程
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain ...
- [java]BoneCP 参数详解
BoneCP 参数详解: ======================================== 一.BoneCP配置文件格式(bonecp-config.xml): xml versio ...
- JQuery数字类型验证正则表达式
有朋友整了一些关于js与jquery的数字类型验证正则表达式代码,下面我给大家再整理一下. 这里包括了数字验证实现与测试实例了,大家可参考. js验证数字正则表达式 代码如下: //检测是否为数字和小 ...
- shiro权限定义的三种方法
1.在配置文件中定义 <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFa ...
- java程序设计基础篇 复习笔记 第五单元
1. method header: modifier, return value type, method signature(method name, parameter) method body ...
- HP数组转JSON函数json_encode和JSON转数组json_decode函数的使用方法
这两个函数比较简单,我这里直接写例子,但是有一点一定要注意,json数据只支持utf-8格式,GBK格式的数据转换为json会报错! json_encode()用法: <?php$data =a ...
- 201621123006 《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 多态.重载.继承.覆盖.super.抽象类 1.2 尝试使用思维导图将这些关键词组织起来.注:思维导图一般不需要出现过多的字. ...
- 解析xml节点属性及子节点内容
xml样例 <microNearlyThreeYearsOverdueInfo subReportType="13204" subReportTypeCost="9 ...
- React 与 可视化
一般会想到 canvas 和 svg ; svg更适合画图, 但由于cavans在移动端的良好兼容性, 使用的更广; 什么是svg, scalable vector graphics 全称 可缩放矢 ...
- jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?
jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...