我正在尝试开发一个node.js应用程序,它使用redis在后端进程和节点之间传递消息。
我希望能够在收到消息的用户会话(连接会话)指示符中保存。
当用户执行ajax查询“IsMessageRecieved”时,我想让他返回我在会话中放置的值。
我尝试使用以下代码,但没有运气,会话没有更新。
redisSub.on("message", (channel, connectsid) ->
sessionStore.get connectsid, (err, session) ->
if (err || !session)
return
else
session.MessageRecieved = true
redisSub.unsubscribe('USER_DATA_READY_' + connectsid)
return
return
)
你知道可能是什么问题吗?
谢谢, 利奥尔
答案 0 :(得分:0)
我将您的示例简化为:
var redisSub = require('redis').createClient();
redisSub.subscribe('USER_DATA_READY_abc');
redisSub.on("message", function(channel, connectsid) {
console.log(channel, connectsid);
});
然后运行redis-cli手动发布到频道,值为“abc”。
~ % redis-cli
redis 127.0.0.1:6379> publish USER_DATA_READY_abc abc
(integer) 1
得到了预期的输出:
USER_DATA_READY_abc abc
以下是我的建议
我怀疑发布没有发布,或者您可能没有订阅正确的频道。