2011-06-08 27 views
9

Actualmente estoy desarrollando un sitio en Django en el que me gustaría implementar algún tipo de sistema de actualización casi en tiempo real.AJAX Polling vs. WebSockets Mobile Performance

Dado que este sitio está destinado a dispositivos móviles, me preguntaba cuál era la comparación de rendimiento entre sondeos periódicos del servidor para cambios (por ejemplo, cada 5 segundos) y utilizando algún tipo de implementación de Websocket ala http://codysoyland.com/2011/feb/6/evented-django-part-one-socketio-and-gevent/.

Con respecto a la duración de la batería, ¿la diferencia es insignificante? En cuanto al código, parece que una implementación de AJAX también sería más simple.

+3

Es posible que también desee examinar el estilo de "cometa" ajax, donde abre una conexión desde el cliente y lo deja abierto durante un tiempo decente (aproximadamente 30 segundos), para que el servidor pueda enviar una respuesta como pronto como sucede un evento. Si no ocurre nada en esos 30 segundos, el servidor simplemente envía una respuesta de "no pasó nada", el cliente no cambia nada y envía su solicitud nuevamente al servidor. – uscere90

+1

Socket.io rompe una conexión websocket tan pronto como hay un descanso del cliente, por lo que hay una comunicación constante. Tendría que adivinar que mantener una comunicación constante consumiría más recursos y, por lo tanto, la duración de la batería en comparación con un sondeo intermitente. – Robert

+0

¿Usaría un estilo de cometa ajax requeriría un servidor adicional ejecutándose en paralelo al que sirve el sitio? – CCSab

Respuesta

1

en cuanto a la batería No creo que ninguno de los dos haga una gran diferencia. Yo usaría socket.io aunque ya que usa socket.io y tratará de usar websockets y si el navegador no los admite vuelva a las solicitudes ajax

2

La respuesta es "depende". Si se dirige a un dispositivo móvil con una buena implementación conocida de websockets, vaya por ese camino. En este momento, probablemente solo sea iPhone/iPad con iOS4.2 o posterior que podría tener una buena implementación.

Para todos los demás, vas a hacer encuestas de todos modos, así que yo diría que sigan esa ruta.

He realizado varios servicios casi en tiempo real (< latencia de 10 s) que funcionan bien con el sondeo. No lo usaría para un motor de chat, pero para la mayoría de todo lo demás está bien.