Redis发布和订阅不处理动态密钥

时间:2015-10-05 08:14:48

标签: php node.js laravel-5 livechat predis

我的要求是为特定用户发布消息。

控制器

$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);  
      } 
  });

但是我的代码适用于硬编码密钥'消息'但接收者收到多条消息,这就是为什么我想根据他们的身份识别号码在不同的密钥上发布和订阅每个用户

1 个答案:

答案 0 :(得分:0)

那太好了!如果用户收到多条消息,您可以忽略其中一条:P