Compatibilidad
Un backend realtime compatible con Pusher
PushCaster habla la versión 7 del protocolo Pusher Channels en el cable. Mudarse es configuración, no reescritura, y esta página es la lista exacta de lo que cambia.
Sin reescribir la aplicación. Solo se requieren cambios en la configuración de conexión. De tres a seis líneas por aplicación; para Laravel, un cambio en .env y nada más. No es drop-in ni zero-config: hay que fijar el host y las credenciales son nuevas.
Qué sigue igual
El cable, las librerías y el handshake de autenticación
Aquí compatibilidad significa el protocolo, no un parecido: formatos de petición/respuesta, semántica de eventos y esquema de autenticación compatibles.
| Área | Qué no cambia |
|---|---|
| Protocolo | La versión 7 del protocolo Pusher Channels en el cable. |
| Librerías de cliente | pusher-js, Laravel Echo y las librerías móviles oficiales, sin modificar. |
| Librerías de servidor | pusher-php-server, pusher-http-node y las librerías de Python, Go, Ruby y Java. |
| Firmas | Esquema de firma y canonicalización compatible. |
| Tipos de channel | public, private, presence y private-encrypted, con los mismos prefijos. |
| Autorización de suscripción | POST /pusher/auth conserva la forma de su petición y de su respuesta. |
| client events | Entre suscriptores en channels private y presence, igual que antes. |
| Webhooks | Los mismos nombres de campo y las mismas cabeceras, incluidos channel_occupied, member_added y cache_miss. |
Versiones de SDK probadas
Compatible con las versiones de SDK de Pusher listadas, sin modificar esos SDK.
| SDK | Versión probada |
|---|---|
| pusher-js (browser) | 8.6.0 |
| pusher/pusher-php-server | 7.3.0 |
| pusher (Node.js) | 5.3.4 |
| pusher (Python) | 3.3.4 |
| pusher-http-go | v5.1.1 |
| pusher (Ruby) | 2.1.1 |
| laravel/framework (Echo) | ^13.0 |
Qué cambia
El host y las credenciales
pusher-js lleva fijado ws-<cluster>.pusher.com salvo que se le pase wsHost, y las librerías de servidor van por defecto a api-<cluster>.pusher.com salvo que se les pase host. Sobrescribir eso es la migración.
const pusher = new Pusher(APP_KEY, {- cluster: 'eu',+ wsHost: 'ws-eu1.pushcaster.io',+ wsPort: 443,+ forceTLS: true, })El cambio completo, por lenguaje
// before — talking to Pushernew Pusher(KEY, { cluster: 'eu' })// after — talking to PushCaster (the key & secret are new)new Pusher(KEY, { wsHost: 'ws-eu1.pushcaster.io', wsPort: 443, forceTLS: true,})Fijar el host se olvida con facilidad. Si se queda en su valor por defecto, la librería habla con los servidores de Pusher, y el error señala una key incorrecta en vez de un destino equivocado.
El app id, la key y el secret son nuevos. Las credenciales existentes no se traspasan. Elija un cluster al mismo tiempo: forma parte del host.
Diferencias conocidas
Tres cosas que no son iguales
Una promesa de compatibilidad solo sirve con sus excepciones. Estas tres pueden cambiar una decisión de diseño.
Un clúster, sin federación
Un clúster es un límite de aislamiento, no una pista geográfica: tiene sus propios nodos, NATS y Redis, y no hay entrega entre clústeres. Una aplicación vive en exactamente uno, así que dos que deban comunicarse pertenecen al mismo.
El host no es el nombre del clúster
cluster: "eu" por sí solo no llega a PushCaster. Debes indicar wsHost en el cliente y host en la librería de servidor. Es una edición de tres opciones, y toda migración la hace.
Sin API de estadísticas
El endpoint de estadísticas del panel de Pusher no tiene equivalente aquí. El consumo viene de nuestra propia API y las métricas operativas de Prometheus. Ningún SDK de servidor oficial llama a ese endpoint, así que esto afecta a tus herramientas, no a tu aplicación.
Migración
Pruebe primero los channels private y presence
Los channels public siguen pasando aunque algo esté mal: no le preguntan nada a su servidor. Un host viejo o un secret que no cuadra solo salen a la luz en los channels private y presence.
- 01Cree la aplicaciónEl cluster que elija forma parte de cada host que está a punto de configurar.
- 02Fije el host en los dos sitiosEl cliente necesita wsHost, el servidor necesita host. Si se deja uno, media aplicación sigue hablando con Pusher.
- 03Cambie las credencialesLas tres cambian juntas. Una key nueva con un secret viejo solo falla en las suscripciones firmadas, y por eso sobrevive a una prueba rápida.
- 04Suscríbase a un channel privateEjercita POST /pusher/auth y demuestra que el secret va con el app id.
- 05Entre en un channel presenceConfirma la lista de miembros y los events de entrada y salida.
- 06Publique desde el servidorConfirma el host de publicación y la firma de extremo a extremo.
Cree una aplicación y apunte un cliente hacia ella.
Pusher es una marca registrada de su titular. PushCaster es un servicio independiente y no está afiliado a Pusher ni cuenta con su respaldo. Los nombres de las librerías se usan de forma descriptiva.