我实施了一对一聊天,在发送消息时我在控制器中发布消息
$redis->publish('message', json_encode($data));
现在在server.js中我为每个连接订阅消息。我通过从池中选择特定的套接字将该消息发送给特定用户。我的问题是我的每条消息多次发送给接收方等于连接数。我在server.js中的代码是
io.on('connection', function (socket)
{
clients[socket.id] = socket;
var redisClient = redis.createClient();
redisClient.subscribe('message');
redisClient.on("message", function(channel, message)
{
var data = JSON.parse(message);
console.info("sent");
if(typeof connectedClients[data['receiver']] === 'undefined'){}
else
{
connectedClients[data['receiver']].socket.emit(channel, message);
}
});