Websocket cadre de la limitation de la taille
Je suis de l'envoyer à d'immenses blocs de données JSON à travers les websockets. Le JSON peut avoir plus de 1000 entrées. En raison de la taille de l'image limitation, le protocole Websocket divise automatiquement le JSON dans des cadres, qui ne peut pas être aidé. Comme nous ne pouvons pas changer la taille du cadre de websockets.
Le problème:
Lorsque j'essaie d'évaluer mon JSON à l'aide de JSON.parse
il me donne une erreur d'analyse qui est évident, parce que les cadres ne sont pas complètes objets JSON. Tout ce qui se passe dans le Websocket onmessage
de rappel d'événement. Comment puis-je recevoir l'énorme JSON dans divers cadres et toujours être en mesure de l'analyser?
J'ai essayé de concat les images de la onmessage
toujours l'erreur persiste.
Côté la question:
Comment concatinate brisé JSON correctement?
Toute résolution à ce sujet? Je suis confronté au même Problème.
Ajouter la taille de la mémoire tampon params à partir de cette liste dans votre web.xml github.com/Atmosphere/atmosphere/blob/master/modules/cpr/src/...
OriginalL'auteur Gaurav Bhor | 2013-12-18
Vous devez vous connecter pour publier un commentaire.
Un seul WebSocket cadre, par RFC 6455 de la base de cadrage, a une limite de taille maximale de 2^63 octets (9,223,372,036,854,775,807 octets ~= 9.22 exaoctets) (correction par @Sébastien)
Cependant, un message WebSocket, composée de 1 ou plusieurs images, n'a pas de limite imposée à partir du protocole de niveau de.
Chaque WebSocket mise en œuvre permettra de gérer message et le cadre des limites différemment. Comme le réglage maximum des messages de tailles pour l'ensemble du message, généralement pour une consommation de mémoire raisons), ou d'offrir des options de diffusion de messages de grande taille pour une meilleure utilisation de la mémoire.
Mais dans votre cas, il est probable que votre choisi WebSocket la mise en œuvre a un bug et il est mal de la séparation de l'JSON message en plusieurs messages, au lieu de plusieurs images. Vous pouvez utiliser le réseau de l'inspection de l'outillage en Chrome ou un outil externe comme Wireshark pour confirmer ce comportement.
Avez-vous essayer de changer le websocket de la taille de la mémoire tampon? Nous allons avoir de la discussion sur l'Atmosphère liste de diffusion, mais je soupçonne que vous devez augmenter le serveur de websocket taille de la mémoire tampon.
OriginalL'auteur Joakim Erdfelt
Modifier la valeur par défaut maxFrameSize & MessageSize
OriginalL'auteur Dc_Neo
Car vous avez affaire avec WS, qui est de bas niveau, vous devez créer un protocole d'application qui traite les données envoyées sur plusieurs WS images. C'est à vous de les concaténer les données dans chaque WS cadre (btw, ne pas concat les images... concat les données de chaque image).
Fondamentalement, vous êtes réinventer un protocole de transfert de fichier.
OriginalL'auteur FrankG