php - Redis 发布和订阅不适用于动态 key

标签 php node.js laravel-5 livechat predis

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

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/

相关文章:

php - 在文件夹中存储数百万张图像的更好解决方案?

php - 在 PHP 中定义多个常量的代码风格

node.js - 使用 Mongoose 对数组字段进行排序

node.js - 处理 Vue 项目中的多个套接字

Laravel 5.6 - 未捕获的运行时异常 : A facade root has not been set

php - Laravel 5 - 验证为假时出现 MethodNotAllowedHttpException

php - 从字段以特定字符/数字结尾的 MySQL 表中进行选择的任何方法?

php - 即时更改选择菜单选项

node.js - 弃用警告 : Buffer() is deprecated due to security and usability issues when I move my script to another server

php - @setUp 和@tearDown 注解 PHPUnit