我只是想确认我的怀疑。
我偶然发现在下列方式使用Socket.io其推荐的文章:
var app = require('express').createServer()
var io = require('socket.io').listen(app);
app.listen(8080);
// Some unrelated stuff
io.sockets.on('connection', function (socket) {
socket.on('action1', function (data) {
// logic for action1
});
socket.on('action2', function (data) {
// logic for action2
});
socket.on('disconnect', function(){
// logic for disconnect
});
});
我觉得以下将是一个更好地利用资源:
var app = require('express').createServer()
var io = require('socket.io').listen(app);
app.listen(8080);
// Some unrelated stuff
io.sockets.on('connection', function (socket) {
socket.on('action1', action1);
socket.on('action2', action2);
socket.on('disconnect', disconnect);
});
function action1(data) {
// logic for action1
}
function action2(data) {
// logic for action2
}
function disconnect() {
// logic for disconnect
}
我的感觉是,虽然处理该匿名函数connection
的事件在内存中创建只有一次,即处理匿名函数action1
, action2
,和disconnect
在内存中创建的每一个套接字连接。 与第二种方法的问题是, socket
不再在范围内。
所以,首先是我对创作的职能怀疑是真的吗? 其次,如果是的话有没有办法让socket
范围为命名的功能呢?