Ars*_*min 6 socket.io socket.io-1.0
在我的游戏应用程序中,我希望有一个用于处理套接字连接和授权的通用类以及几个用于事件处理的类,如下所示:
//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);
});
});
};
Run Code Online (Sandbox Code Playgroud)
为不同的路由器生成唯一的事件名称以互不干扰不是问题。问题在于断开连接事件 - 我希望每个路由器都有可能对其执行正确的操作。在每个路由器中添加自己的处理程序来断开事件是否正确,这样每个路由器都会触发:
//lobbySocketRouter
socket.on("disconnect", function() {
//handling lobbySocketRouter special actions
});
...
//gameSocketRouter
socket.on("disconnect", function() {
//handling gameSocketRouter special actions
});
Run Code Online (Sandbox Code Playgroud)
?
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:
Run Code Online (Sandbox Code Playgroud)
“ route ”我猜你正在谈论命名空间,你可以处理多个“路由器”,然后根据命名空间处理每个断开事件。
我在之前的回答中编写了一个模板应用程序来获取数组内的多个命名空间:
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");
}
.
.
.
}
};
Run Code Online (Sandbox Code Playgroud)
然后您可以根据命名空间创建多个断开连接行为,希望它有所帮助。
如果您需要其他东西,请告诉我:-)