我尝试创建一个多通道,具体取决于同一端口中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();
});
});
我有点迷雾所有的建议都会受到欢迎:)
答案 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存储/获取通道名称。
问题:我不明白你需要什么“管理订阅频道重复的网址”
什么是频道重复?