¿Cuál es la mejor manera de mantener todos los clientes sincronizados con un servidor y entre ellos?
Actualmente, tenemos dos enfoques en mente:
- Cuando un cliente envía algo al servidor, el servidor envía inmediatamente mensajes a todos los clientes, que reaccionan de inmediato.
- Introduciendo algún retraso de tiempo, mediante el cual el servidor envía mensajes a todos los clientes, con la directiva, "actúe sobre esto a tiempo
t
.
El segundo enfoque parece que probablemente mantendría a todos los clientes en una mejor sincronización (ya que ofrece cierto grado de retraso); pero me pregunto si la capacidad de respuesta se perdería en un grado demasiado alto (es decir, el usuario hace clic en "saltar" y hay una brecha notable entre presionar el botón y realmente saltar).
También existe la posibilidad de que los clientes calculen su propia posición (y no esperen a que los servidores digan "has saltado"); pero debido al retraso inevitable, los clientes estarían muy desincronizados.
Luego está toda la pregunta TCP vs. UDP; porque lo queremos rápido, pero también odiaría que el servidor diga que estás en una ubicación completamente diferente de lo que pensabas.
Con todas estas demandas en competencia, todo se vuelve muy incierto sobre cómo debemos abordar este problema. ¿Cuál de estos enfoques (o cualquier otro) sería mejor para mantener sincronizados a los clientes y al servidor? ¿Cuáles se usan realmente en la industria?