以前在Socket.io 0.9中,namespace.$emit(...)下有一个公开的方法,它允许你使用NodeJS EventEmitter功能绑定事件。
io.of('namespace').on(...)
这可以用于在同一个socket.io中发出事件,而无需进行任何类型的外部客户端或其他方法。
它出现在Socket.io 1.0中,删除了private variable。
是否有官方方法或最佳方式在同一个应用程序中发送和接收socket.io事件而无需使用socket.io-client并连接到服务器?
我现在通过创建自己的回调注册来解决这个问题,但我更愿意使用socket.io在内部监听它自己的事件并利用它的命名空间。
socketIO.register = function(event, callback){
socketIO.registeredEvents = socketIO.registeredEvents || {};
socketIO.registeredEvents[event] = socketIO.registeredEvents[event] || [];
socketIO.registeredEvents[event].push(callback);
};
socketIO.emitInternal = function(event, eventData){
if(!socketIO.registeredEvents[event] || socketIO.registeredEvents[event].length === 0) return;
socketIO.registeredEvents[event].forEach(function(callback){
callback(eventData);
});
};