Все примеры Socket.io следуют этому шаблону
io.sockets.on("connection", function(mySocket){
mySocket.on("my message", function(myData){
...
});
});
Мне кажется, что это создаст новую функцию обратного вызова для каждого соединения. Предполагая, что каждый сокет отвечает на сообщение одинаковым образом, не будет ли более эффективным с точки зрения использования памяти определение обработчика один раз для всех сокетов, подобных этому:
function myMessageHandler(data){
...
}
io.sockets.on("connection", function(mySocket){
mySocket.on("my message", myMessageHandler);
});
или даже это:
io.sockets.on("my message", function(mySocket, myData){
...
});
Если да, то почему Socket.io рекомендует практику, которая тратит память? Ожидается ли, что мы захотим сохранить переменные состояния для сокета внутри закрытия обратного вызова «соединения»?