2013-08-21 70 views
2

我不能找到一個很好的方式「開」處理其他參數傳遞到socket.io,即:Socket.io「的」功能 - 通過額外的參數

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

現在我要訪問additionalData someEventHandler函數中的對象位於另一個文件中。有沒有類似的方式來傳遞參數給像jQuery'on'給我們的處理程序? ($obj.on('event', '.selector', dataObject, handlerFunction)

回答

3

您可以使用另一個函數來處理事件,然後傳遞您需要的任何其他數據。例如:

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

是的,我知道這種方式,但它似乎醜陋給我,我覺得真的應該是這樣的jQuery的「上」給我們。 –

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 
});