Gibt es in node.js / socket.io eine maximale Nachrichten-/Ereignisgröße?
Frage
Der Titel sagt alles – gibt es eine maximale Größe für ein Ereignis (oder eine Nachricht), die ich vom Server an den Client senden möchte?
Ich möchte einen JSON-String an den Client senden und dieser sieht in etwa so aus:
[{"id":"4e25434f0f110ec101000005","media":"4fb135d508e972664c5adf3.jpg"},
{"id":"4e2545f30f110ec101000021","media":"d09b745414e251695aa33e04.jpg"},
{"id":"4e2554ce7bcfb24702000012","media":"076eea872411e433b9.png"},
{"id":"4e255bc4f34a41cb02000010","media":"c2af3db4707db3ece.png"}]
wenn das Array z.B.200 Artikel, würde das abstürzen?!
Lösung
Es würde nicht abstürzen, ich habe versehentlich ein Array von 250 extrem großen Objekten über Socket.IO gesendet und es hat es ohne Probleme verarbeitet.
Sie können es sich einfach so vorstellen, als würden Sie über eine HTTP-Anfrage ein JSON-Objekt mit 250 Elementen senden. Es kann jedoch eine Weile dauern, bis der Benutzer alles heruntergeladen hat.Das ist im Grunde die einzige Einschränkung, die Sie haben würden.
Andere Tipps
Ich glaube nicht, dass das abstürzen wird, da node.js über einen integrierten Nagle-Algorithmus verfügt (sofern Sie ihn nicht deaktiviert haben), der die Daten vor dem Senden puffert.
http://www.nodejs.org/docs/v0.5.1/api/net.html#socket.setNoDelay
Node.js allein kann es für Benchmarking-Zwecke problemlos bewältigen. Ich habe 800-KB-Daten in einem Block gesendet (Random Flush).Der Empfang auf der anderen Seite dauerte lange, wurde aber erfolgreich gesendet.