Socket.io die Beispiele alle folgen diesem Mustereffizienteste Weg Socket.io auf („message“) Handler
io.sockets.on("connection", function(mySocket){
mySocket.on("my message", function(myData){
...
});
});
Es scheint mir, zu definieren, dass dies eine neue Callback-Funktion für jede Verbindung schaffen würde. Unter der Annahme, dass jede Buchse auf die Nachricht in der gleichen Art und Weise reagiert, wäre es nicht mehr Speicher effizienter sein, den Handler einmal für alle Buchsen wie folgt zu definieren:
function myMessageHandler(data){
...
}
io.sockets.on("connection", function(mySocket){
mySocket.on("my message", myMessageHandler);
});
oder auch diese:
io.sockets.on("my message", function(mySocket, myData){
...
});
Wenn ja, warum empfiehlt Socket.io eine Praxis, die Speicher verschwendet? Wird erwartet, dass wir Stateful-Variablen für den Socket innerhalb des Callbacks von "connection" behalten wollen?
Sie beschäftigen sich mit dieser unnötigen Form der Sorge, die als "vorzeitige Optimierung" bekannt ist. Wenn der Unterschied in Overhead Ihre Anwendung macht oder bricht, ist node.js die falsche Plattform. – ebohlman
Meine Anwendungslogik wird über Dutzende von Socket-Nachrichten ausgeführt und bedient Tausende von gleichzeitigen Verbindungen. Wenn jede Verbindung tausende Zeilen von Callbacks dupliziert, scheint das für mich eine große Optimierungsaufsicht zu sein – arkanciscan