Socket IO 显示重复消息

3
我正在使用redis来进行通知,它的工作方式如下 - 当用户1有通知要与他的朋友分享时,我将该消息发布到用户的每个朋友的所有频道上。使用socket.io和node,消息被推送到每个朋友,订阅部分由node处理。
这很好用,直到连接断开为止。此时,在重新连接时,我发现朋友的频道上会发生2次发布,而不是像上一次那样只有1次活动。
“是否有任何配置可以避免在重新连接时重复发布?”
另外还发现,在重新连接时,它也尝试使用辅助传输进行连接。这可能是问题吗?

1
这个回答有帮助吗?https://dev59.com/zGQn5IYBdhLWcg3wgnPg#16796375 - user568109
我已经尝试过了,但问题还没有解决。 - fortm
你找到任何解决方案了吗? - Maziyar
我也遇到了同样的问题。每次重新连接时,每个.emit()都会增加1条额外的消息。 - Xeos
使用jQuery的"once"解决了它.. - fortm
1个回答

1
我想每次连接都会发生这种情况。
io.sockets.on('connection', function(client){
//...
});

你订阅了Redis。
redisClient.subscribe('activity:*');

每次都连接Redis是不必要的。你应该在socket连接之前连接Redis。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接