私は1対1のチャットを実装し、メッセージを送信しながらコントローラーでメッセージを
$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);
}
});