如何修复使用同一套接字ID多次连接的套接字连接,导致多次发出事件

时间:2019-11-08 07:20:18

标签: javascript node.js sails.js

我正在将sails.js用于我的节点框架,并使用socket io进行群聊。 Web套接字出现奇怪的行为。作为Javascript作为前端客户端,当调用具有套接字连接逻辑的API多次且一条消息发送相同次数的API时。

首先在react native应用中遇到的问题,然后我使用普通的javascript作为客户端对其进行了尝试。当我想关闭套接字时,我还发出了socket.disconnect()。

我的客户端上的代码

     var socket = io('http://localhost:1339');

            socket.on('connect', function () {
                console.log('connection made')
            });
            socket.on('abc',(message)=>{
                console.log('message', message)
            })

            document.getElementById('socketClose').addEventListener('click', ()=>{
                console.log('desconnecting', socket.id);
                socket.disconnect();
            })

服务器控制器中的代码

getActiveChat: async(req, res)=>{
            sails.io.on("connection", function(socket){
                sails.io.sockets.emit('abc',{ socketId: socket.id });   
            });

}

更新: 我能够通过删除API内部的连接事件来解决此问题,因为每次定义API时都定义了连接侦听器,这并不覆盖以前的侦听器方法。我将代码放在config的sockets.js文件中,我们不需要每次定义连接监听器。

0 个答案:

没有答案