当前位置:  开发笔记 > 编程语言 > 正文

如何让不同的Web浏览器在Redis/Node.js/Socket.io pub/sub设置中订阅单独的频道?

如何解决《如何让不同的Web浏览器在Redis/Node.js/Socket.iopub/sub设置中订阅单独的频道?》经验,为你挑选了1个好方法。



1> Ganesh Kumar..:

根据您的示例,APP将为每个用户打开一个新的redis连接,这没有意义.

这对于整个应用程序使用一个连接(您必须再为连接作业发布数据)

客户端

    var socket = io.connect('http://localhost:3000');

socket.emit('channel','US');
socket.on('news',function(news){
    $("body").append('
' + news); }); socket.on('message',function(msg){ $("body").append('
' + msg); });

服务器端

var io      = require('socket.io');
var express = require('express');
var app     = express.createServer();

io = io.listen(app);

app.listen('3000');
var pub = require('node_redis').createClient(); //publish cli
var redis = require('node_redis').createClient(); //sub cli
redis.psubscribe('*');  

redis.on('pmessage',function(pat,ch,msg){
    io.sockets.in(ch).emit('news',msg);
});

io.sockets.on('connection',function(socket){
    console.log('Socket connected: ' + socket.id);

    socket.on('channel',function(ch){
        socket.join(ch)

         //Publishing data on ch
         pub.publish(ch,"Hello " + ch);  
    });


    socket.on('disconnect',function(){
        console.log('Socket dis connected: ' + socket.id);
    });
});


console.log('Server started @ 3000');

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有