在使用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); });
应该工作,而“数据”是通过的第一个参数,当发射“新的东西”。