在使用socket.io的node.js中,如何dynamic添加到套接字侦听器?

如果有标准的socket.io设置:

 var app = require('http').createServer().listen(80,'127.0.5.12'), io = require('socket.io').listen(app); session = require('./local_modules/session.js'); // creating a new websocket to keep the content updated without any AJAX request io.sockets.on('connection', function(socket) { // session, login, logout socket.on( 'session', session.session.bind(socket) ); socket.on( 'login', session.login.bind(socket) ); socket.on( 'logout', session.logout.bind(socket) ); // what to add new listener here! }); 

稍后在程序中,一旦知道它想做什么,它希望为套接字侦听器添加新的function。 例如,在“会话”中间,可能希望添加“新事物”:

 exports.session = function( sid) { var socket = this; ... // everything cool, now want to add 'something-now' to socket // do I simply - will something simple as this work? socket.on( 'something-new', session.something_new.bind(socket) ); } exports.something_new = function( arg ) { } 

这是正确的 – 这似乎是错的?

如果你只是想在套接字事件'something-new'上调用'whatever.func()',

 socket.on('something-new', whatever.func(data) ); 

要么

 socket.on('something-new', function(data){ whatever.func(data); whatelse.func(data.someproperty); }); 

应该工作,而“数据”是通过的第一个参数,当发射“新的东西”。