【问题标题】:Wrap socket.io emit and on methods包装 socket.io 的 emit 和 on 方法
【发布时间】:2017-08-28 18:11:27
【问题描述】:

我正在尝试为 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() 没有做任何特别的事情,只是调用默认的 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()]);
};

知道如何改进我的测试吗?

谢谢,亚历山德罗

【问题讨论】:

  • 你解决了吗?
  • 是的,我能够从回调中获取一些数据。我用代码发布了一个答案。

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


【解决方案1】:

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

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

您需要稍微调查一下packet 对象,以了解什么对您很重要。

适用于 socket.io 1.7.2。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多