Node.js 控制2个socket.io连接

Node.js 控制2个socket.io连接,node.js,express,socket.io,Node.js,Express,Socket.io,我正在开发一个有两类用户的应用程序。我想在两个socket.io文件中分离出它们的功能 index.js: var io = require('socket.io').listen(server); require('/sockets/userType1')(io); require('/sockets/userType2')(io); userType1.js: module.exports = function (io) { io.on("connection", functi

我正在开发一个有两类用户的应用程序。我想在两个socket.io文件中分离出它们的功能

index.js:

var io = require('socket.io').listen(server);
require('/sockets/userType1')(io);
require('/sockets/userType2')(io);  
userType1.js:

module.exports = function (io) {
    io.on("connection", function (socket) {
        console.log("Connected to userType1");
    });
}
module.exports = function (io) {
    var nsp = io.of('/userType1');
    nsp.on("connection", function (socket) {
        console.log("Connected to userType1");
    });
}
userType2.js

module.exports = function (io) {
    io.on("connection", function (socket) {
        console.log("Connected to userType2");
    });
}
module.exports = function (io) {
    var nsp = io.of('/userType2');
    nsp.on("connection", function (socket) {
        console.log("Connected to userType2");
    });
}
但是,当我从客户端连接时,它会同时连接到这两个端(我想这是我所期望的,因为我无法区分我要连接的是哪一个)

是否有一种方法可以将连接定义为仅连接到其中一个socket.io类?还是只需要依赖命名约定?

Socket.io

userType1.js:

module.exports = function (io) {
    io.on("connection", function (socket) {
        console.log("Connected to userType1");
    });
}
module.exports = function (io) {
    var nsp = io.of('/userType1');
    nsp.on("connection", function (socket) {
        console.log("Connected to userType1");
    });
}
userType2.js

module.exports = function (io) {
    io.on("connection", function (socket) {
        console.log("Connected to userType2");
    });
}
module.exports = function (io) {
    var nsp = io.of('/userType2');
    nsp.on("connection", function (socket) {
        console.log("Connected to userType2");
    });
}
用户类型用户:

module.exports = function (io) {
    io.on("connection", function (socket) {
        console.log("Connected to ALL USERS");
    });
}
客户端(对于usertype2):

服务器控制台:

已连接到userType2

已连接到所有用户


看一看。谢谢@robertklep这正是我想要的。你不能将两个单独的socket.io服务器连接到同一个web服务器。只是不能这样做——它们都会看到所有传入的请求,因为客户端对其中一个的请求与另一个的请求是无法区分的。您必须在一个新端口上创建一个新的web服务器,然后在另一个端口上连接其中一个连接,或者在一个socket.io服务器上使用单独的socket.io名称空间,就像woodsy建议的那样。