В настоящее время у меня есть приложение чата (один к одному) в node.js и socket.io. поскольку количество пользователей на моем веб-сайте увеличивается, я хочу добавить Redis в свое приложение для чата. Вот небольшой пример моего текущего приложения:
// all requires and connections
io.sockets.on('connection', function(socket) {
socket.on('message', function(msg) {
// code to get receiverssocket
io.sockets.sockets[receiverssocket].emit('message',
{"source": msg.sendersusername,"msg": msg.msg});
});
});
Теперь я пытаюсь найти примеры того, как это сделать с помощью Redis, но я не могу найти пример чатов один на один с Redis. я могу найти только примеры, в которых сообщения отправляются всем пользователям. Вот один из примеров, которые я смотрел
Один из способов сделать это, как я думал, состоял в том, чтобы создать каналы для каждого пользователя, получающего сообщения, но это привело бы к тысячам каналов. Любая помощь в том, как я могу это сделать?
Изменить: добавлен код
io.sockets.on('connection', function (client) {
sub.on("message", function (channel, message) {
console.log("message received on server from publish ");
client.send(message);
});
client.on("message", function (msg) {
console.log(msg);
if(msg.type == "chat"){
pub.publish("chatting." + msg.tousername,msg.message);
}
else if(msg.type == "setUsername"){
sub.subscribe("chatting." + msg.user);
sub.subscribe("chatting.all" );
pub.publish("chatting.all","A new user in connected:" + msg.user);
store.sadd("onlineUsers",msg.user);
}
});
client.on('disconnect', function () {
sub.quit();
pub.publish("chatting.all","User is disconnected :" + client.id);
});
});