ejemplos de Socket.IO todos siguen este patrónforma más eficiente para definir Socket.io on ("mensaje")
io.sockets.on("connection", function(mySocket){
mySocket.on("my message", function(myData){
...
});
});
Me parece que esto crearía una nueva llamada de retorno para cada conexión. Suponiendo que cada toma responde al mensaje de la misma manera, ¿no sería más eficiente de la memoria para definir el manejador de una vez para todos los sockets como este:
function myMessageHandler(data){
...
}
io.sockets.on("connection", function(mySocket){
mySocket.on("my message", myMessageHandler);
});
o incluso esto:
io.sockets.on("my message", function(mySocket, myData){
...
});
Si es así, ¿por qué Socket.io recomienda una práctica que desperdicia memoria? ¿Se espera que deseemos mantener variables con estado para el socket dentro del cierre de la devolución de llamada de "conexión"?
Estás involucrado en esa forma innecesaria de preocupación conocida como "optimización prematura". Si la diferencia en la sobrecarga hace o rompe su aplicación, node.js es la elección incorrecta de la plataforma. – ebohlman
La lógica de mi aplicación se lleva a cabo a través de docenas de mensajes de socket, y sirve miles de conexiones simultáneas. Si cada conexión duplica miles de líneas de devolución de llamada, eso parecería ser una gran supervisión de optimización para mí – arkanciscan