gateworker分布式做直播间,为什么进入房间、发评论会互串呢

a7635064

如题,就说我在a直播间发得评论,会在b直播间显示,但不是每次都这样,只会偶尔出现这样得情况,会不会是因为我进入a直播间得时候,用到了joinGroup,然后离开得时候我没写leaveGroup(这块离开的时候不是框架自动执行嘛,所以就没写),然后当离开a直播间后,迅速点击进入b直播间,然后b直播间得长连接还没来得及返回,或者网络慢得原因,导致系统没有自动执行leaveGroup,这样导致我虽然在b直播间,但是我发评论什么得还是在a直播间

2409 5 0
5个回答

keytehu

不知道你是怎么区分是给a直播间还是b直播间发的。我们是进入直播间a的时候,前端记录一个标记,当前是a直播间,然后发消息的时候带上这个标记,服务端根据这个标记sendToGroup(a, 消息)给a直播间发消息,这样保证给a发的消息不会发到其它房间。基于这个机制我们还从没乱过。另外手册说连接断开自动执行leaveGroup,我不清楚你触发自动执行是通过断开连接?如果不是的话你需要调用leaveGroup来离开房间,不然可能会收到其它房间的消息。如果你不好做leaveGroup,有个变通的方法,sendToGroup发出去的消息把房间号带上,客户端发现当前标记的房间号和服务端发来的不一致就不显示。

  • a7635064 2020-04-20

    下面是分布式配置和代码部分

a7635064




  • a7635064 2020-04-20

    两台服务器代码一样,只粘贴一份代码

a7635064

就是用户进入a直播间,会提示用户进入了a直播间,但同时也会显示在b直播间,也就是b直播间也会提示用户进入了直播间,评论也是如此,会在每个直播间都显示,不知道问题出在了哪?

  • 暂无评论
a7635064

还有一个情况,就是前端将用户的client_id存的死的,也就是用户第一次得到了client_id,如果后面没再次获取到新的client_id,则该用户会始终使用这个client_id,除非获取到了新的才会覆盖之前的client_id,会不会是这个原因导致的呢

  • 暂无评论
抽不完的寂寞

你的代码明显有bug,只有joinGroup,没有leaveGroup。当然会乱了

年代过于久远,无法发表回答
×
🔝