Kay*_*ast 4 publish-subscribe redis node.js socket.io node-redis
当我使用socket.io执行pub/sub时,下面的代码工作得很好.
基本上,我从浏览器发送聊天消息.在服务器上,我收听此消息并将其发回给所有来自服务器的相同消息.所以,我希望每发送一条消息都会返回/打印1条消息.
通过以下内容,我可以从多个浏览器登录,当我发送聊天消息时,它会按预期返回/打印为单个聊天消息.
io.use(socketHandshake({store: sessionStore, key:'jsessionid', secret:'secret', parser:cookieParser()}));
io.on('connection', function (socket) {
socket.on('chat', function (message) {
io.emit('chat', "hello world");
});
});
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用redis做pub/sub时,会出现问题.
从第一个浏览器:1个聊天消息导致打印出1个聊天消息
从第二个浏览器:1个聊天消息导致打印出2个聊天消息
从第三个浏览器:1个聊天消息导致打印出3个聊天消息
var sub = redis.createClient();
var pub = redis.createClient();
sub.subscribe('chat');
io.use(socketHandshake({store: sessionStore, key:'jsessionid', secret:'secret', parser:cookieParser()}));
io.on('connection', function (socket) {
socket.on('chat', function (message) {
// io.emit('chat', "hello world");
pub.publish('chat', "hello world");
});
sub.on('message', function (channel, message) {
io.emit(channel, message);
});
});
Run Code Online (Sandbox Code Playgroud)
我错过了什么?我是初学者,我正在尝试这个例子http://blog.cloudfoundry.org/2013/01/24/scaling-real-time-apps-on-cloud-foundry-using-node-js-and -redis /使用最新版本的express,socket.io,socket.io-handshake和redis.
我对这个redis pub/sub感到难过.请帮忙.
您为每个连接添加了一个新的"消息"处理程序.这就是为什么你开始看到越来越多的连接越来越多的重复.尝试移动你sub.on('message', ...);的socket.io连接处理程序.
| 归档时间: |
|
| 查看次数: |
1999 次 |
| 最近记录: |