socket.io-redis不将消息转发到命名空间上的套接字

时间:2016-02-08 00:40:07

标签: node.js socket.io

我有一个解决方案,其中应用程序使用socket.io-emitter发出消息,并且套接字服务器正在处理消息。

套接字服务器从客户端浏览器接收消息时没有问题,但它不会从其他应用程序接收通过redis适配器发送的任何消息。

我已经调试了redis适配器并且可以看到正在接收消息,我还可以看到它们与正确的命名空间相关联。它们似乎没有触发socket.on()事件

服务器代码有更多进展,但基本归结为以下

io.adapter(redisIO({host: redisHost, port: redisPort}));     
io.of('/mynamespace').on('connection',
    function(socket) {
       // This message never gets fired
       socket.on('other-server-message',dosomething);
       // This message works fine
       socket.on('message-from-browser-client',dosomethingelse);
    }
);

没有太多的文档,所以任何帮助都会很棒

1 个答案:

答案 0 :(得分:0)

我终于意识到问题所在。我误解了socket.io-emitter正在做什么。

我从发射器发送消息,然后尝试在服务器上捕获它,然后将其推送到客户端。发射器实际上是直接向Web浏览器中的客户端广播,就好像它只是另一个服务器插槽(这就是我想要的)。

我更新了客户端代码以检查其完美运行的消息