Socket.io“on”函数 - 传递其他参数

时间:2013-08-21 20:50:09

标签: javascript node.js socket.io

我找不到将附加参数传递给socket.io'on'处理程序的好方法,即:

var someEventHandler = require('someEventHandler'),
    additionalData = {test: 1};
socket.on('event', someEventHandler);

现在我想访问位于另一个文件中的someEventHandler函数中的additionalData对象。有没有类似的方法将参数传递给像jQuery'on'给我们的处理程序? ($obj.on('event', '.selector', dataObject, handlerFunction)

2 个答案:

答案 0 :(得分:3)

您可以使用另一个函数来处理事件,然后传递您需要的任何其他数据。例如:

var someEventHandler = require('someEventHandler'),
    additionalData = {test: 1};
socket.on('event', function(e) { someEventHandler(e, additionalData); } );

答案 1 :(得分:0)

由于您不喜欢自己包装回调,因此您可以更改socket.on功能以使其符合您的要求。像

这样的东西
const originalOn = socket.on;
socket.on = function (event, data, callback) {
    return originalOn.call(socket, event, (e) => callback(e, data));
};

您现在可以这样使用它:

let data = {/* important data */};
socket.on('importantEvent', data, (e, additionalData) => {
    // Have fun with your data
});