2011-07-25 14 views
8

el título lo dice todo: ¿existe un tamaño máximo para un evento (o mensaje) que deseo enviar desde el servidor al cliente?node.js/socket.io existe un mensaje/tamaño de evento máximo

Quiero enviar una cadena JSON para el cliente y se ve algo como esto:

[{"id":"4e25434f0f110ec101000005","media":"4fb135d508e972664c5adf3.jpg"}, 
{"id":"4e2545f30f110ec101000021","media":"d09b745414e251695aa33e04.jpg"}, 
{"id":"4e2554ce7bcfb24702000012","media":"076eea872411e433b9.png"}, 
{"id":"4e255bc4f34a41cb02000010","media":"c2af3db4707db3ece.png"}] 

si la matriz contendría, por ejemplo, 200 artículos, ¿se estrellaría?

Respuesta

7

No se bloqueó, accidentalmente envío una matriz de 250 objetos extremadamente grandes sobre Socket.IO y lo manejó sin problemas.

Puede verlo como si enviara un objeto JSON de 250 elementos a través de una solicitud http, podría tomar un tiempo para que el usuario lo descargue todo ... Esa es básicamente la única limitación que tendría.

+0

Pregunta: ¿qué ocurre con los mensajes emitidos después de los objetos grandes? ¿Llegarán simplemente muy tarde (después de que se complete la transferencia) o los mensajes comenzarán a llegar en el orden incorrecto? Supongo que ambos escenarios son indeseados. –

5

No creo que se bloquee ya que node.js tiene un algoritmo nagle incorporado (si no lo has deshabilitado) que almacena los datos antes de enviarlos.

http://www.nodejs.org/docs/v0.5.1/api/net.html#socket.setNoDelay

Node.js el único que puede manejarlo fácilmente con fines de referencia que he enviado los datos de 800kb en un trozo (ras al azar). tomó mucho tiempo para recibir en otro lado, pero fue enviado con éxito.

Cuestiones relacionadas