在尝试抽象套接字机制时,您尝试实现的内容听起来像 facade pattern。
在我看来,这种实现可能非常困难,因为您必须对套接字进行非常好的抽象,我有一个完全不同的方法,我的做法是通过@987654322 将分组的套接字分开@ 和责任,假设我有一个套接字文件,它只会进行用户交互,其他用于管理活动流(在社交网络的情况下)或管理产品等。在查看 MVC 模式中的控制器时查看它们.
为了将套接字分成不同的物理文件,您可以通过如下文件管理事件处理程序:
io.of('namespace').on('connection',function(socket){
var eventHandlers = {
'user': new userLib.UserSocket(socket, app),
'document': new documentLib.documentSocket(socket,app)
};
for (var category in eventHandlers) {
var handler = eventHandlers[category].handlers;
for (var event in handler) {
socket.on(event, handler[event]);
}
}
socket.on('error',function(err){
console.error(err);
});
socket.on('disconnect',function(){
console.log('disconnect');
});
}
在您的用户事件处理程序文件(例如 user.socket.js)中:
var signup = function(){
var self = this;
//TODO: do your code
};
var authenticate = function(){
var self = this;
//TODO: do your code
}
exports.UserSocket = function(socket,app){
this.app = app;
this.socket = socket;
this.handlers = {
authenticate:authenticate.bind(this),
signup: signup.bind(this)
};
};
希望有帮助!