Saltar al contenido

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.

Qué no cambia al pasar de Pusher Channels a PushCaster
ÁreaQué no cambia
ProtocoloLa versión 7 del protocolo Pusher Channels en el cable.
Librerías de clientepusher-js, Laravel Echo y las librerías móviles oficiales, sin modificar.
Librerías de servidorpusher-php-server, pusher-http-node y las librerías de Python, Go, Ruby y Java.
FirmasEsquema de firma y canonicalización compatible.
Tipos de channelpublic, private, presence y private-encrypted, con los mismos prefijos.
Autorización de suscripciónPOST /pusher/auth conserva la forma de su petición y de su respuesta.
client eventsEntre suscriptores en channels private y presence, igual que antes.
WebhooksLos 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.

Versiones de SDK de Pusher con las que se ejecuta la suite de compatibilidad
SDKVersión probada
pusher-js (browser)8.6.0
pusher/pusher-php-server7.3.0
pusher (Node.js)5.3.4
pusher (Python)3.3.4
pusher-http-gov5.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.

src/realtime.tsunified diff
const pusher = new Pusher(APP_KEY, {
- cluster: 'eu',
+ wsHost: 'ws-eu1.pushcaster.io',
+ wsPort: 443,
+ forceTLS: true,
})

El cambio completo, por lenguaje

client.js
js
// 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.

  1. 01Cree la aplicaciónEl cluster que elija forma parte de cada host que está a punto de configurar.
  2. 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.
  3. 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.
  4. 04Suscríbase a un channel privateEjercita POST /pusher/auth y demuestra que el secret va con el app id.
  5. 05Entre en un channel presenceConfirma la lista de miembros y los events de entrada y salida.
  6. 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.

Support