包装socket.io发射和方法

时间:2016-08-30 08:25:53

标签: javascript node.js sockets websocket socket.io

我试图创建一个适合我需要的自定义版本的socket.io的emit()和on()方法。 我能够像这样使用emit()方法:

socket._emit = function () {
        console.log('socket._emit ', arguments);
        event = arguments[0];
        data ={
            'username': user.username,
            'token': user.token,
            'data': arguments[1]
        };
        socket.emit.apply(this, [event, JSON.stringify(data)]);
};

我对on()方法有问题,因为我无法获取回调函数的数据,所以现在我的自定义_on()没有做任何特殊的事情,只是调用默认值上()。

socket._on = function () {
        socket.on.apply(this, arguments);
};

我的目标是记录on()方法回调收到的每个数据。我试过这样的事情,但没有工作。

socket._on = function () {
        callback = function(){
            console.log('socket._on ', //arguments from arguments[1]()//);
            arguments[1]();
        }
        socket.on.apply(this, [arguments[0], callback()]);
};

有关如何改进测试的想法吗?

谢谢,亚历山德罗

1 个答案:

答案 0 :(得分:0)

我最终得到了这个解决方案:

var _onevent = socket.onevent;
socket.onevent = function (packet) {
    console.log('[S] On: ', packet);
    _onevent.call(socket, packet);
};

您需要调查一下packet对象,以便了解对您而言重要的事情。

适用于socket.io 1.7.2。