是否有一个函数拦截客户端上来自服务器的所有socket.io数据

时间:2014-09-28 11:15:30

标签: node.js socket.io

socket.io clientide代码可以使用此

  var socket = io('http://localhost:8888');
socket.on('news', function (data) {

    socket.emit('my other event', { my: 'data' });
});

但我想拦截socket.io发出的服务器上的所有数据,不仅是新闻,还要处理数据。那可能吗。

1 个答案:

答案 0 :(得分:1)

你想要的是注册" socket"发出的所有事件。 这个问题被广泛讨论here。它在socket.io代码中没有用,但评论者提出了一些方法。

您最好的选择可能是this path

(function() {
 var emit = socket.emit;
 socket.emit = function() {
 console.log('***','emit', Array.prototype.slice.call(arguments));
    emit.apply(socket, arguments);
};
var $emit = socket.$emit;
socket.$emit = function() {
    console.log('***','on',Array.prototype.slice.call(arguments));
    $emit.apply(socket, arguments);
  };
})();

请查看链接主题以获取更多信息。

您可以在其他一些方法中找到其他信息here