控制2个socket.io连接

时间:2017-04-17 12:51:34

标签: 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", function (socket) {
        console.log("Connected to userType1");
    });
}

userType2.js

module.exports = function (io) {
    io.on("connection", function (socket) {
        console.log("Connected to userType2");
    });
}

然而,当我从客户端连接时,它连接到两者(我想我会期望,因为我没有区分我试图连接到哪一个)。

有没有办法将连接定义为只连接到其中一个socket.io类?或者我只需要依赖命名约定?

1 个答案:

答案 0 :(得分:1)

Socket.io NAMESPACES

userType1.js:

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) {
    var nsp = io.of('/userType2');
    nsp.on("connection", function (socket) {
        console.log("Connected to userType2");
    });
}

userTypeALLUSERS:

module.exports = function (io) {
    io.on("connection", function (socket) {
        console.log("Connected to ALL USERS");
    });
}

客户端(for usertype2):

var socket = io('/userType2');

服务器控制台:

  

已连接到userType2

     

连接所有用户