Pregunta

Yo uso Node.js y Socket.io. Tengo un problema con la velocidad de conexión con Socket.io. En Internet Explorer y Opera tengo un problema con la velocidad de conexión. - Cuando uso FlashSocket o WebSocket. Cuando uso, el modo de conexión de transporte XHR es rápida, en todos los navegadores (es decir, FF, Chrome, Opera).

¿Cuál es la diferencia entre el modo de transporte: polling XHR y flash / websocket? ¿Cuál es el mejor modo de transporte? ¿Cómo optimizar la velocidad de conexión es Socket.io?

¡Gracias por el consejo!

¿Fue útil?

Solución

Me sorprendería que la velocidad general de la conexión a lo largo del tiempo fuera diferente entre los navegadores web, pero la razón por la que verá un retraso en la conexión inicial en Internet Explorer y en Opera es que el soporte de WebSocket nativo no está disponible como ha sido así. deshabilitado por defecto. Por lo tanto, si elige FlashSocket, entonces un objeto Flash adicional (archivo SWF) deberá descargarse antes de establecer una conexión.

Los WebSockets se introducen en IE10 y en Opera están disponibles, pero se deshabilitan de forma predeterminada.

¿Cuál es la diferencia entre el modo de transporte: polling XHR y flash / websocket?

  • Xhr -coling - ver http://en.wikipedia.org/wiki/push_technology#long_polling
  • Conexión FlashSocket: utiliza un objeto Flash Socket para establecer una conexión con el servidor WebSocket y se comunica utilizando el Protocolo WebSocket. Esto significa que hay interacción entre Flash y JavaScript y también significa que se debe descargar un objeto flash adicional (archivos SWF).

¿Cuál es el mejor modo de transporte?

WebSockets para cualquier navegador web que lo admita de forma nativa (Chrome, Firefox, Safari). Si el objeto flash (archivo swf) está en el caché del navegador, entonces la conexión debe ser rápida. Si no es así, habrá un retraso. XHR Polling largo es una buena solución y funcionará con un navegador cruzado, pero hay negativos:

  • Entre las solicitudes de la encuesta, los datos en la pantalla podrían estar desactualizados (obsoletos).
  • Es un método de conexión menos eficiente que una sola conexión TCP utilizada por WebSockets ya que HTTP Polling largo utiliza una conexión múltiple para simular la funcionalidad bidireccional
  • HTTP tiene una sobrecarga, lo que significa que se envía información de encabezado adicional a pedido y cada solicitud posterior.

¿Cómo optimizar la velocidad de conexión es Socket.io?

(Soy bastante nuevo en Socket.io para esto es solo una sugerencia)

Miraría el Configuración de Socket.io Docs y ver si puede establecer condicionalmente el transports Basado en el navegador que se conecta. Según sus experiencias, esto podría ser:

  • Chrome, Firefox, Safari - WebSockets
  • Es decir, ópera - xhr -polling

Otros consejos

Para reducir el tiempo de conexión, puede intentar reducir el tiempo de espera de conexión (que es de 10 segundos de forma predeterminada) utilizando el parámetro "Connect TimeOut".

Por ejemplo, para reducir el tiempo de espera de conexión a 1 segundo:

socket = io.connect('http://your-site.com',{'connect timeout': 1000});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top