Socket.io:如何处理服务器上的所有传入消息?

我希望能够处理来自单个处理程序中的客户端的所有消息。

示例客户端代码:

var socket = io.connect('http://localhost'); socket.emit('news', { hello: 'test' }); socket.emit('chat', { hello: 'test' }); 

服务器代码示例:

 io.sockets.on('connection', function (socket) { socket.on('message', function (data) { console.log(data); }); }); 

我希望能够logging每个消息,即使它发送新闻,聊天或任何其他名称使用发出。 这可能吗?

注意:上面的服务器代码不起作用。 目前没有任何logging。 我只是想知道是否有一个单一的事件,可以为每个发射名称的所有消息处理。

这可以通过重写套接字。$ emit函数

 //Original func var x = socket.$emit; socket.$emit = function(){ var event = arguments[0]; var feed = arguments[1]; //Log console.log(event + ":" + feed); //To pass listener x.apply(this, Array.prototype.slice.call(arguments)); }; 

这是Socket.IO的一个公开问题 。

在这个时候,如果你真的需要它,你可能需要fork Socket.IO。 请参阅3rd-Edens对如何去做的评论 。