Compatibilidade
Um backend realtime compatível com o Pusher
O PushCaster fala a versão 7 do protocolo Pusher Channels no fio. Mudar é configuração, não reescrita — e esta página é a lista exata do que muda.
Sem reescrever a aplicação. Apenas mudanças na configuração de conexão são necessárias. De três a seis linhas por aplicação; no Laravel, uma mudança no .env e mais nada. Não é drop-in nem zero-config: o host precisa ser definido, e as credenciais são novas.
O que continua igual
O fio, as bibliotecas e o handshake de autenticação
Compatibilidade aqui significa o protocolo, não uma semelhança — formatos de requisição/resposta, semântica de eventos e esquema de autenticação compatíveis.
| Área | O que não muda |
|---|---|
| Protocolo | A versão 7 do protocolo Pusher Channels no fio. |
| Bibliotecas de cliente | pusher-js, Laravel Echo e as bibliotecas móveis oficiais, sem modificação. |
| Bibliotecas de servidor | pusher-php-server, pusher-http-node e as bibliotecas de Python, Go, Ruby e Java. |
| Assinaturas | Esquema de assinatura e canonicalização compatível. |
| Tipos de channel | public, private, presence e private-encrypted, com os mesmos prefixos. |
| Autorização de inscrição | POST /pusher/auth mantém o formato da requisição e da resposta. |
| client events | Entre inscritos em channels private e presence, como antes. |
| Webhooks | Os mesmos nomes de campo e os mesmos cabeçalhos, incluindo channel_occupied, member_added e cache_miss. |
Versões de SDK testadas
Compatível com as versões dos SDKs da Pusher listadas, sem modificar esses SDKs.
| SDK | Versão testada |
|---|---|
| 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 |
O que muda
O host, e as credenciais
O pusher-js tem ws-<cluster>.pusher.com fixo a menos que wsHost seja informado, e as bibliotecas de servidor vão por padrão para api-<cluster>.pusher.com a menos que host seja informado. Sobrescrever isso é a migração.
const pusher = new Pusher(APP_KEY, {- cluster: 'eu',+ wsHost: 'ws-eu1.pushcaster.io',+ wsPort: 443,+ forceTLS: true, })A mudança completa, por linguagem
// 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,})Definir o host passa batido com facilidade. Deixado no padrão, a biblioteca fala com os servidores do Pusher, e o erro aponta uma key errada em vez de um destino errado.
O app id, a key e o secret são novos. As credenciais existentes não são transferidas. Escolha um cluster na mesma hora — ele faz parte do host.
Diferenças conhecidas
Três coisas que não são iguais
Uma promessa de compatibilidade só serve com as exceções dela. Estas três podem mudar uma decisão de projeto.
Um cluster, sem federação
Um cluster é um limite de isolamento, não uma dica geográfica: tem seus próprios nós, NATS e Redis, e não há entrega entre clusters. Uma aplicação vive em exatamente um, então duas que precisam conversar pertencem ao mesmo.
O host não é o nome do cluster
cluster: "eu" sozinho não chega ao PushCaster. Você define wsHost no cliente e host na biblioteca de servidor. É uma edição de três opções, e toda migração a faz.
Sem API de estatísticas
O endpoint de estatísticas do painel da Pusher não tem equivalente aqui. O uso vem da nossa própria API e as métricas operacionais do Prometheus. Nenhum SDK de servidor oficial chama esse endpoint, então isso afeta suas ferramentas, não sua aplicação.
Migração
Teste primeiro os channels private e presence
Os channels public continuam passando quando alguma coisa está errada — eles não perguntam nada ao seu servidor. Um host velho ou um secret que não bate só aparece nos channels private e presence.
- 01Crie a aplicaçãoO cluster que você escolher faz parte de cada host que você está prestes a configurar.
- 02Defina o host nos dois lugaresO cliente precisa de wsHost, o servidor precisa de host. Esqueça um e metade da sua aplicação continua falando com o Pusher.
- 03Troque as credenciaisAs três mudam juntas. Uma key nova com um secret velho só falha nas inscrições assinadas — e é por isso que ela sobrevive a um teste rápido.
- 04Inscreva-se num channel privateExercita POST /pusher/auth e prova que o secret combina com o app id.
- 05Entre num channel presenceConfirma a lista de membros e os events de entrada e saída.
- 06Publique do servidorConfirma o host de publicação e a assinatura de ponta a ponta.
Crie uma aplicação e aponte um cliente para ela.
Pusher é marca registrada de seu respectivo titular. O PushCaster é um serviço independente, sem afiliação ao Pusher e sem endosso dele. Os nomes das bibliotecas são usados de forma descritiva.