websocket+nodejs

问题遇到的现象和发生背景

框架:websocket+nodejs
功能:人工服务,用户连接人工,将本用户与人工特有的用户进行加好友,然后可以进行聊天。如果用户有人工的好友,则推送数据。 断开:删除好友,将本用户与人工用户生成的房间号从聊天室移除(只断开本用户与人工的连接,不影响本用户与其他用户的聊天)
问题:第一次连接人工,推送数据正常,断开。之后,在第一次基础上,不刷新浏览器,再次连接本用户与人工用户,向本用户推送的数据随着次数递增,数据推送异常。
声明:每次连接本用户与人工,后端连接人工推送的数据只推送了一次(已经调试过),但是前端接受数据除了第一次,其他都是已成,推送了很多次。断开本用户与人工的连接用的client.leave(roomId);roomId是本用户与人工用户生成的在聊天室内的房间名。

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
 console.log('给用户推荐菜单成功')
                    
        let jsoMmenuResult =data;//推送的数据
        let menuResult=JSON.parse(jsoMmenuResult)//转对象
        if(menuResult.code==200 && menuResult.success==true){
          this.server.to(data.userId).emit('onItsupportMenu',{ code:RCode.OK, msg:'给用户推荐菜单成功200', data: jsoMmenuResult})
        }else{
          const tocken=await tockenMetod.gainTocken()
          tockenMetod.tocken =tocken;
          jsoMmenuResult=await menuseats.display(tocken);
          this.server.to(data.userId).emit('onItsupportMenu',{ code:RCode.OK, msg:'给用户推荐菜单成功!!200', data: jsoMmenuResult});
        }

运行结果及详细报错内容

无报错

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

前后端已经调试过,怀疑是没有彻底断开本用户与人工用户的连接,或者socket的缓存没清除

可能是没有关闭websocket连接导致的,在窗口事件onbeforeunload中关闭连接。

建议你检查一下前端代码,确认是否有重复监听数据推送事件的代码,或者是否有多余的连接代码未断开,导致重复接收数据。另外,检查一下 client.leave(roomId) 方法是否正确执行,确保断开连接后,房间内的所有用户都已经离开。