WebSockets como Servicio

La plataforma gestionada en tiempo real detrás del chat y los datos en vivo de foony.com, abierta a todos los desarrolladores en foony.io.

Un servicio de WebSocket mantiene una conexión persistente abierta entre tus servidores y cada cliente conectado, así que las actualizaciones llegan en el momento en que ocurren en lugar de al recargar la página. Foony Realtime se encarga de las partes menos glamurosas por ti: conexiones, reconexiones, fan-out, presencia e historial de mensajes, todo detrás de un pequeño SDK.

1.5Mjugadores atendidos al mes
500M+mensajes entregados al mes
<100msobjetivo de fan-out p95

Pruébalo en vivo

Todo lo de abajo funciona ahora mismo contra el servicio en producción en realtime.foony.io. Abre esta página en una segunda pestaña y observa cómo ambas se reflejan entre sí.

Presencia y cursores en vivo

Todos los que están leyendo esta página aparecen aquí, directamente desde la presencia del canal. Las posiciones de los cursores viajan como mensajes efímeros, el nivel de baja latencia que se salta el almacenamiento por completo.

1 aquí ahoraMueve el ratón. Haz clic para saludar.

Chat en vivo

Este es el chat real de esta página, la misma sala @foony/chat con la que funcionan todas las páginas de Foony y las salas de juego. Los mensajes llegan por un canal con historial, y los envíos pasan por el servidor de Foony, así que cada mensaje se modera.

Nadie ha dicho nada últimamente. Rompe el hielo.

Sincronización de base de datos

Este es el pipeline de producción de foony.com: escribe cualquier nombre de usuario de Foony y su fila pública de Postgres se transmite en directo por el WebSocket del sitio, y se sigue actualizando en tiempo real mientras juegan. Sin polling ni endpoints de API.

Buscando…

Por qué los equipos compran WebSockets en lugar de construirlos

  • Reconexiones que no pierden mensajes. Los navegadores cortan conexiones constantemente. Los clientes retoman donde lo dejaron con la reproducción del historial, así que una conexión inestable no significa mensajes perdidos.
  • Fan-out a gran escala. Entregar un mensaje a cien mil suscriptores en menos de un segundo es un problema difícil de sistemas distribuidos. Aquí, es todo el trabajo.
  • Presencia sin llevar la cuenta. Mira quién está en línea ahora mismo y reacciona a los eventos de entrada, actualización y salida, sin escribir tu propia lógica de heartbeat y timeout.
  • Sin planificación de capacidad. Los servidores WebSocket tienen estado, así que escalarlos por tu cuenta implica drenado, sharding y enrutamiento sticky. Un servicio gestionado hace que eso sea el busca de otra persona.

Lo que consigues con Foony Realtime

Canales y pub/sub

Distribuye eventos con nombre por WebSocket o REST a canales con ámbito de app (p. ej. chat:lobby) con semántica de entrega predecible.

Presencia

Controla quién está en línea, actualiza la pertenencia automáticamente y reacciona a los eventos de entrada, actualización y salida.

Historial de mensajes

Reproduce los mensajes recientes desde almacenamiento duradero para que los clientes se recuperen sin problemas tras las reconexiones.

Autenticación por token

Genera tokens de cliente de corta duración desde tu backend con permisos de publicación, suscripción, presencia e historial a nivel de canal.

Compatible con Pusher

Habla el protocolo de Pusher, así que las apps con pusher-js y Laravel Echo se conectan con un cambio de configuración en lugar de una reescritura.

Sincronización de base de datos

Transmite los cambios de Postgres directamente a los clientes suscritos como consultas en directo, sin polling ni código pegamento.

Toda la integración son unas pocas líneas:

const realtime = new Realtime({ authCallback });
const channel = realtime.channels.get('chat:lobby');

channel.on((message) => {
  showMessage(message.data);
});

await channel.publish('message', { text: 'hello' });
await channel.presence.enter({ name: 'Acorn' });

Probado en juegos reales

Foony hace un uso intensivo de Foony Realtime para nuestro chat y las actualizaciones de base de datos en tiempo real. Alrededor de 1,5 millones de jugadores al mes confían en foony.io para unos 500 millones de mensajes, y un juego multijugador solo se siente bien cuando esos mensajes llegan rápido, en orden y exactamente una vez. Foony no sería posible sin la fiabilidad y la rentabilidad de foony.io.

8 Ball Pool online multiplayer billiards thumbnailDinoMight Bomberman style online multiplayer thumbnailChess online multiplayer board thumbnail9 Ball Pool online multiplayer billiards thumbnailSnooker online multiplayer thumbnailCarrom board game online multiplayer thumbnail

Míralo en acción en cualquiera de nuestros juegos, y luego consigue la misma infraestructura con un panel de control y un SDK en foony.io.

Bulby, la mascota de Foony

Pruébalo con tu propio tráfico

El plan gratuito incluye 9 millones de mensajes al mes. Sin tarjeta de crédito.

Preguntas frecuentes

¿Qué es WebSockets como servicio?

Una plataforma gestionada que se encarga de las conexiones persistentes entre tu app y sus usuarios. En lugar de gestionar tus propios servidores WebSocket, tus clientes se conectan al servicio, tu backend publica mensajes en canales mediante un SDK o REST, y el servicio se encarga de la entrega, las reconexiones, la presencia y el historial.

¿En qué se diferencia Foony Realtime de Pusher o Ably?

Cubre la misma base de canales, presencia, historial y autenticación por token, y habla el protocolo de Pusher, así que funciona como alternativa directa a Pusher. La diferencia está en su origen y su precio. Se creó para foony.com, nuestra propia web de juegos multijugador, y el plan gratuito incluye 9 millones de mensajes al mes.

¿Tengo que reescribir mi app para cambiar?

Normalmente no. Las apps con pusher-js y Laravel Echo pueden apuntar a Foony Realtime con un simple cambio de configuración. Los proyectos nuevos usan el SDK @foony/realtime para JavaScript y TypeScript, el SDK de Go, o la API REST desde cualquier lenguaje.

¿Cuánto cuesta?

El plan gratuito incluye 9 millones de mensajes al mes. Los planes de pago añaden capacidad mensual, y el uso por encima de tu plan se factura por millón de mensajes. Puedes consultar las cifras actuales en foony.io/pricing.

8 Ball Pool online multiplayer billiards icon