我的要求是为特定用户发布消息。
Controller
$messageQueueKey=(string)$receiver; (receiver_id)
$redis->publish($messageQueueKey, json_encode($data));
Server.js//Node js
var handshakeData = socket.request;
var messageQueueKey=handshakeData._query['userid'];
clients[socket.id] = socket;
var redisClient = redis.createClient();
redisClient.subscribe(messageQueueKey);
// redisClient.subscribe('message');
redisClient.on('message', function(channel, message)
{
var data = JSON.parse(message);
if(typeof connectedClients[data['receiver']] === 'undefined'){}
else
{
connectedClients[data['receiver']].socket.emit(channel, message);
}
});
但是我的代码适用于硬编码 key “消息”,但接收者收到多条消息,这就是为什么我想根据每个用户的身份验证 ID 在不同的 key 上发布和订阅他们
最佳答案
没关系!如果用户收到多条消息,您可以忽略其中一条:P
关于php - Redis 发布和订阅不适用于动态 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32943987/