私は自分の疑いを確認したかっただけです。
次の方法で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
はメモリ内に1回だけ作成されますが、、、を処理する無名関数は、action1
ソケット接続ごとにメモリ内に作成されるaction2
と思います。disconnect
2番目のアプローチの問題はsocket
、範囲がなくなったことです。
それで、最初に、関数の作成についての私の疑いは本当ですか?そして第二に、もしそうならsocket
、名前付き関数のスコープに入る方法はありますか?