我認爲首先將每個回調函數放入不同的函數中,並將其放入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" });
};
讓我知道如果您有任何問題
附加
如果你想要類似Socket.on('event',myModule.doSomething);
你可以像這樣我的模塊中猜測:
客戶端:
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 */
};
我認爲把每一個回調函數在不同的起始功能,你把io.on('連接'),也許也把它們放在一個不同的文件(使用module.exports),你會開始有一個更清晰的應用程序。 – Jujuleder
@Jujuleder這正是我需要的。但我想知道如何在維護所有模塊中的套接字對象的情況下實現這一點。 – Raiss