在我的游戏应用程序中,我希望有一个用于处理套接字连接和授权的通用类以及用于事件处理的几个类,以这种方式:
//loading game/lobby/other socket routers
...
var socketRouter = function(server) {
var io = Io(server);
io.use(socketioJwt.authorize({
secret: config.secretKey,
handshake: true
}));
io.on("connection", function(socket) {
lobbySocketRouter(socket);
gameSocketRouter(socket);
//other routers
...
socket.on("disconnect", function() {
console.log("DISCONNECTED", socket.id);
});
});
};
为不同的路由器生成唯一的事件名称以避免相互干扰不是问题。问题在于断开事件 - 我希望每个路由器都有可能对它执行正确的操作。添加自己的处理程序来断开每个路由器中的事件是否正确,这样每个路由器都会触发:
//lobbySocketRouter
socket.on("disconnect", function() {
//handling lobbySocketRouter special actions
});
...
//gameSocketRouter
socket.on("disconnect", function() {
//handling gameSocketRouter special actions
});
答案 0 :(得分:2)
I want every router having possibility to perform right action on it. Is it correct to add own handler to disconnect event in every router like this so each of them would trigger:
“路由”我想您正在谈论Namespaces,您可以处理多个“路由器”,然后根据命名空间处理每个断开连接事件。
我在my previous answer中写了一个模板应用程序来获取数组中的多个命名空间:
socket.on('disconnect', disconnectCallback(socket,ns));
function disconnectCallback(socket,ns) {
return function(msg) {//we return a callback function
if(ns==="blabla") {
console.log("Disconnected from blabla");
socket.broadcast.send("It works! on blabla");
}
.
.
.
}
};
然后,您可以根据命名空间创建多个断开连接行为,希望它有所帮助。
如果您需要别的东西,请告诉我: - )