我认为首先将每个回调函数放入 io.on('connection') 中放入的不同函数中,也许也将它们放入不同的文件中(使用 module.exports),您将开始拥有更清晰的应用程序。
好吧,我会写给你我使用的一种可能性,我不知道这是否是 socket.io 宇宙中最好的模式,但我认为这很好。
在你的主文件(带有 io.onconnection 的文件)中,你可以有这样的东西(你不必使用命名空间,这只是一个例子):
var SocketEvent = require('./socketEvent');
io.of('/user').on('connection', function (socket) {
SocketEvent.load_common_event(socket);
SocketEvent.load_user_event(socket);
});
io.of('/operator').on('connection', function (socket) {
SocketEvent.load_common_event(socket);
SocketEvent.load_operator_event(socket);
});
在您加载的 socketEvent.js 中,您可以拥有以下内容:
exports.load_common_event = function(socket){
socket.on('disconnect', function(){"Some other code"});
};
exports.load_user_event = function(socket){
socket.on('event1', function(data){"lots of socket and non-socket codes" });
socket.on('event2', function(data){"lots of socket and non-socket codes" });
socket.on('event3', function(data){"lots of socket and non-socket codes" });
};
exports.load_operator_event = function(socket){
socket.on('event4', function(data){"lots of socket and non-socket codes" });
socket.on('event5', function(data){"lots of socket and non-socket codes" });
socket.on('event6', function(data){"lots of socket and non-socket codes" });
};
如果您有任何疑问,请告诉我
Add-on
如果你想要类似 Socket.on('event' , myModule.doSomething); 的东西
我想你可以在模块中这样做:
client :
var myModule = require('./socketModule');
io.on('connection', function (socket) {
socket.on('event' , myModule.doSomething(/*some parameters (socket)*/));
});
服务器socketModule.js:
exports.doSomething = function(/*some parameters (socket)*/){
/* Some processing around */
};