我目前在使用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进行一对一聊天的示例,但我找不到一个只能向所有用户发送消息的示例。这是我查看过的其中一个示例: 我想到的一种方法是为每个接收消息的用户创建通道,但这将导致成千上万的通道。请问有办法解决这个问题吗?
编辑:添加了一些代码
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);
});
});