Diferencias entre websockets y sondeo largo para servidor de juegos por turnos

90

Estoy escribiendo un servidor para un juego de iOS. El juego se basa en turnos y la única vez que el servidor necesita enviar información al cliente es para notificar el movimiento del oponente.

Tengo curiosidad por saber si alguien podría comentar sobre el rendimiento y la facilidad de implementación de las diferencias entre el uso de websockets y el sondeo largo. Además, si utilicé websockets, ¿debería usarlo solo para recibir información y enviar solicitudes POST para todo lo demás o toda la comunicación debería realizarse a través de websocket?

Además, ¿hay algo adicional a considerar entre websockets y encuestas largas si estoy interesado en hacer también un cliente web?

ácido
fuente
6
También puede usar notificaciones automáticas para notificar al cliente sobre nuevos datos. Creo que es más eficiente (en cuanto a batería) de lo que consideraron sus dos soluciones.
pteofil
1
¿Cómo funcionaría eso si el usuario todavía estuviera en la aplicación?
ácido
4
También se le notifica en la aplicación cuando recibe una notificación automática.
pteofil

Respuestas:

177

¿Qué es el sondeo largo?

ingrese la descripción de la imagen aquí Una variación de la técnica de sondeo tradicional y permite la emulación de un envío de información desde un servidor a un cliente. Con un sondeo largo, el cliente solicita información del servidor de forma similar a un sondeo normal.

  • Si el servidor no tiene ninguna información disponible para el cliente, en lugar de enviar una respuesta vacía, el servidor retiene la solicitud y espera que haya alguna información disponible.
  • Una vez que la información está disponible (o después de un tiempo de espera adecuado), se envía una respuesta completa al cliente. El cliente normalmente volverá a solicitar información inmediatamente al servidor, de modo que el servidor casi siempre tendrá una solicitud en espera disponible que puede utilizar para entregar datos en respuesta a un evento.

    En un contexto web / AJAX, el sondeo largo también se conoce como programación Comet.

¿Qué pasa con Websockets?

ingrese la descripción de la imagen aquí WebSockets proporciona una conexión persistente entre un cliente y un servidor que ambas partes pueden usar para comenzar a enviar datos en cualquier momento.

  • El cliente establece una conexión WebSocket mediante un proceso conocido como protocolo de enlace WebSocket. Este proceso comienza con el cliente enviando una solicitud HTTP regular al servidor.
  • Se incluye un encabezado de actualización en esta solicitud que informa al servidor que el cliente desea establecer una conexión WebSocket.

Conclusión :

Si necesita comunicación en tiempo real, puede optar por websockets.

Pero en Long Polling:

Se mantiene abierta una conexión entre el cliente web y el servidor web para que cuando el servidor tenga nueva información pueda enviarla al cliente. Entonces se termina esa solicitud. Luego, se realiza una nueva solicitud entre el cliente y el servidor y luego se espera otra actualización del servidor. La misma conexión TCP generalmente está abierta de manera persistente a través de múltiples solicitudes debido a HTTP / 1.1 Keep-Alives.

Referencias y otras consideraciones:

Sondeo largo de PubNub vs sockets: duración de la batería del móvil

¿Qué son Long-Polling, Websockets, Server-Sent Events (SSE) y Comet?

sondeo largo en objetivo-C

Introducción a Websocket

Websocket Vs sondeo largo

Usar Websockets en aplicaciones

Aplicación Websocket

Sondeo largo de PushTechnology

Tharif
fuente