Socket.io多个连接

时间:2016-05-19 02:24:52

标签: javascript node.js sockets websocket socket.io

奇怪的问题我还没有找到关于的文档。我认为这可能最终只是一个简单的案例,“你不明白产品是如何运作的”,我希望有人可以填补空白。

这是发生了什么......我有3个独立的应用程序,它们是socket.io服务器。他们都在不同的端口上听。每个服务器都用于不同的专用目的。我正在构建应用程序,以便我可以将其部分扩展,并且只影响我需要更改/更新的单个隔离部分。

这很好用,直到我意识到每个运行的应用程序都有一个额外的套接字连接每个服务器。所以,如果我有3个应用程序,那么每个服务器上有3个连接。

这样做的证据是,如果我将console.log(“已连接”)添加到每个服务器然后连接客户端,则每个服务器报告的连接数与服务器数量一样多。希望这是有道理的。

我的目标是,每台服务器需要1个连接。似乎连接各自充当所有套接字服务器的通用连接。我的服务器监听器设置如下:

set()

我的客户连接如下:

io = require('socket.io').listen(26265) // can use up to 26485

编辑:

添加原始问题,以便您可以看到更多代码......

完整的客户代码:

socket = new io('http://localhost:26265')

服务器代码很长......所以相关部分是:

importJS('/js/pages/admin_base.js',function(){     
        AdminIO = new io('http://localhost:26266');
        AdminIO.on('send_users',function(rows){
            toggleLoad();
            /*
            if(typeof rows === 'object'){
                rows = Array(rows);
            }   
            */  
            appendUsers(rows);       
            console.log(rows);
        });
        AdminIO.on('failed_users',function(){
            toggleLoad();
            dropInfo("Failed to retrieve userlist",{level: "error"});
        });
        AdminIO.on('test',function (q) {
            console.log(q);
        });
    queryUsers(AdminIO);
});

1 个答案:

答案 0 :(得分:-4)

尝试从io中删除'new'关键字。 您不应该在那里使用“new”,因为每次重新加载页面或新客户端连接时它都会生成新实例。 所以,它应该看起来像: 服务器端:

var io = require('socket.io')(26265);

客户方:

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

我认为这就是你要找的东西。