Anatomía de una reserva de taxi en tiempo real
Construí el backend de un sistema de despacho de taxis en Toronto, y lo más útil que puedo darte no es código. Es el dibujo que hacía una y otra vez en cada llamada con el equipo:
Las tres decisiones que importan
WebSockets, no polling. Un conductor envía su ubicación cada 2 segundos. Por HTTP eso es una conexión nueva, cabeceras y autenticación en cada señal. Por un solo WebSocket es un frame de 30 bytes. Con 200 conductores conectados, esa es toda la diferencia.
El servidor solo se encarga del emparejamiento, nada más. El despacho decide qué conductor recibe el viaje y retransmite las posiciones. No lleva la llamada de voz.
La voz va de igual a igual. WebRTC necesita el servidor una sola vez, para el handshake (mensajes como las flechas 1 y 2, para intercambiar direcciones de red). Después, el audio fluye de teléfono a teléfono. Costo de ancho de banda cero de tu lado, menor latencia para ellos.
La pila para los curiosos: Laravel para la API y el emparejamiento, WebSockets para el canal en vivo, WebRTC para las llamadas, y una cola (ver el primer artículo) para recibos y notificaciones.
Notas de los lectores