2015-10-05 141 views
1

我的要求是爲特定用戶發佈消息。Redis發佈和訂閱不支持動態密鑰

控制器

$messageQueueKey=(string)$receiver; (receiver_id) 
$redis->publish($messageQueueKey, json_encode($data)); 

Server.js //節點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); 
     } 
    }); 

但是我的代碼適用於硬編碼的關鍵「消息」,但接收器接收這就是爲什麼我要發佈多條消息,並根據用戶的身份驗證號爲每個用戶訂閱不同的密鑰

回答

0

這很好!如果用戶正在接收多條消息,則可以忽略該消息:P