Migrate from Pusher
Because Vixus Push speaks the Pusher protocol, moving an existing app is mostly configuration: new credentials and a different host. Your channels, event names, authorization endpoint and client code stay as they are.
Before you start
- Create an app in the dashboard and note its
app_id,key,secretand the host. - Check the compatibility table for anything your app relies on, such as webhooks or encrypted channels.
- Compare your Pusher plan with Limits and quotas: connections, messages per day and event size.
1. Point the browser at the new host
Swap the key and replace cluster with a host and port:
diff
const pusher = new Pusher("YOUR_NEW_KEY", {
- cluster: "eu",
+ cluster: "",
+ wsHost: "YOUR_HOST",
+ wsPort: 443,
+ wssPort: 443,
+ forceTLS: true,
+ enabledTransports: ["ws", "wss"],
channelAuthorization: { endpoint: "/api/pusher/auth" },
});Your host and port are on the app's Overview page. Keep enabledTransports as shown: it stops the library from trying fallbacks that do not exist here.
2. Point your server at it
Use the new id, key and secret, and add the host:
diff
const pusher = new Pusher({
appId: "YOUR_NEW_APP_ID",
key: "YOUR_NEW_KEY",
secret: process.env.PUSHER_APP_SECRET,
- cluster: "eu",
+ host: "YOUR_HOST",
+ port: "443",
+ useTLS: true,
});The authorization endpoint needs no other change: it signs with the new secret because the library is configured with it. Laravel and Echo users change the environment variables on the Laravel tab of the Quickstart.
3. Cut over safely
- Put the old and new credentials behind a setting, and deploy with Pusher still selected.
- Switch a small share of traffic, or a staging environment, to Vixus Push and watch for errors (see Errors and close codes).
- Switch the rest. Clients reconnect on the next page load, so old and new clients simply live on different services for a while: events published to one service are not delivered to clients on the other, so move your publishers and your clients together.
What is different
| In Pusher | Here |
|---|---|
Clusters (cluster: "eu") | A host and port; one region |
| Beams push notifications | Not available |
| Debug console and event log | Not available |
| Webhooks configured in the dashboard | Not available in the dashboard yet |
| "Authorized connections only" setting | Not available: protect private data with private channels |
| Allowed origins per app | Not available |
| Limits by plan | Different numbers, see Limits and quotas |