多通道取决于nodejs和redis的路径

时间:2011-06-27 21:23:33

标签: node.js redis

我尝试创建一个多通道,具体取决于同一端口中nodejs的路径。 例如(我的端口是8080):

wwww.exemple.com:8080/channel/1

wwww.exemple.com:8080/channel/2

wwww.exemple.com:8080/channel/3

wwww.exemple.com:8080/channel/4

每个网址路径通道对应一个频道redis

例如(channel-X):

var channel = 'channel-X'
getRedis.subscribe(channel);

但我不知道如何链接频道并重复网址。

这是我当前时间的代码。

socket.on('connection', function(client) {
const getRedis = redis.createClient();
const sendRedis = redis.createClient();
getRedis.subscribe('channel-1');

getRedis.on("message", function(channel, message) {
    client.send(message);
});


client.on('message', function(msg) {
    sendRedis.publish('channel-1',msg);
});


client.on('disconnect', function() {
    getRedis.quit();
    sendRedis.quit();
});

});

我有点迷雾所有的建议都会受到欢迎:)

1 个答案:

答案 0 :(得分:0)

您无法将频道名称链接到socket.io。因为socket.io客户端仅承载最新的用户信息。

解决方案1: 您可以从客户端传递频道名称。

//Client side


var socket = new io.Socket();

socket.on('connect', function() {

socket.send({ChannelName:'channel-X',Message:'HI !!'});
});




//Server side

socket.on('connection', function(client) {

const getRedis = redis.createClient();


getRedis.on("message", function(channel, message) {
    client.send(message);
});


client.on('message', function(msg) {
    //Assume the input msg is JSON structure {ChannelName:'channel-X',Message:'HI !!'}
    var data = JSON.parse(msg);
     getRedis.subscribe(data.ChannelName);

});

});

解决方案2:

使用会话存储按套接字会话ID存储/获取通道名称。

问题:我不明白你需要什么“管理订阅频道重复的网址”

什么是频道重复?