Socket.io“on”函数 – 传递附加参数

我无法find一个很好的方式来传递额外的参数到'处理程序上的socket.io',即:

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

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

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

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

既然你不喜欢自己包装callback,你可以改变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 });