Pusher Docs Reference
Soketify implements the complete Pusher Channels protocol. Every official Pusher SDK and every feature in the Pusher documentation works here. This page maps the full Pusher docs to what we cover natively and links directly to Pusher for everything else.
100% protocol compatible
Change wsHost to ws.soketify.com and host to api.soketify.com in your SDK config. Every Pusher example in their documentation will work exactly as written.
Getting Started: SDK Quick Starts
Our Quick Start covers JavaScript. Use pusher-js with wsHost: "ws.soketify.com".
Install pusher-websocket-swift via SPM. Replace the cluster with wsHost: "ws.soketify.com" and set useTLS: true.
Install pusher-websocket-android via Gradle. Replace cluster with the Soketify WebSocket host.
Use pusher_channels_flutter. Pass host: "ws.soketify.com" and cluster: "default".
Same as the JavaScript quick start; pusher-js works in React Native. Point wsHost to ws.soketify.com.
Getting Started: Use Case Quick Starts
Fully compatible: swap the Pusher app credentials for your Soketify credentials and update wsHost.
Uses presence channels, fully supported. See our Channels and Authentication docs.
Using Channels: Client SDK
Covers pusher-js API: bind, unbind, subscribe, unsubscribe. All methods work identically.
Fully covered: states, socket_id, error codes, disconnection.
Connection-level user auth (pusher.signin(), pusher.user). Supported by Soketi. Requires a /pusher/user-auth endpoint returning a signed token. Not the same as channel authorization.
Notifies you when specific users go online/offline across any connection. Requires user authentication (pusher.signin). Supported by Soketi; enable via app settings and provide a watchlist in your user-auth endpoint.
Pusher Functions is a serverless compute feature specific to Pusher's cloud. Not available in Soketify. Use a regular serverless function (Cloudflare Workers, Vercel, etc.) and trigger events via the REST API instead.
Connection-level authorization that locks a connection to a specific user. Implemented alongside user authentication. Supported by Soketi.
All five channel types (public, private, encrypted, presence, cache) are documented here.
Binding, unbinding, system events, client events, naming rules: all covered.
Covers pusher-js init options: activityTimeout, pongTimeout, enabledTransports, disabledTransports, authEndpoint, auth headers, etc. All options work. Key difference: set wsHost / wsPort / wssPort instead of cluster.
pusher-js can fall back to SockJS (xhr_streaming, xhr_polling) on networks that block WebSockets. In our Quick Start we set enabledTransports: ["ws", "wss"] which disables fallbacks for simplicity. Remove that option to enable them. Required for: corporate proxies, old mobile networks, HTTP-only environments.
Server API
Trigger events, batch trigger, list channels, channel info, presence users.
Server endpoint for connection-level user auth (/pusher/user-auth). Complementary to our Authentication guide which covers channel authorization.
Server-side API to push events directly to a user_id rather than a channel name. Supported by Soketi. POST to /apps/{appId}/users/{userId}/events.
Force-disconnect all connections for a given user_id. POST to /apps/{appId}/users/{userId}/terminate_connections. Supported by Soketi.
Pass socket_id to trigger/triggerBatch to exclude the sender. Covered in the Events guide.
Channels Libraries
Every official Pusher server library works with Soketify. Pass host: "api.soketify.com" instead of using the cluster option.
Library Auth Reference
Deep-dive into the HMAC-SHA256 signature scheme for both channel auth and REST API auth.
The low-level WebSocket protocol Soketify implements. Only relevant if you are building a custom client library.
What a conformant Pusher server library must implement. Useful if you are building an SDK.
Enable debug logging in pusher-js with Pusher.logToConsole = true. Works identically with Soketify.
Device Compatibility
Compatibility is entirely determined by pusher-js and the official native SDKs; Soketify does not change it. The same rules apply.
Web Browsers
| Transport | When used | Coverage |
|---|---|---|
| WebSocket (ws / wss) | All modern browsers | ~98% of global traffic |
| xhr_streaming | WebSocket blocked (corporate proxies) | Fallback via pusher-js |
| xhr_polling | Streaming also blocked | Last-resort fallback |
Fallbacks are disabled by default in our Quick Start
The Quick Start config sets enabledTransports: ["ws", "wss"], which disables HTTP fallbacks entirely for cleaner performance. If your users are on corporate networks that block WebSockets, remove that option to let pusher-js fall back automatically.
Native Mobile
| Platform | SDK | Transport |
|---|---|---|
| iOS / macOS | pusher-websocket-swift | WebSocket only |
| Android | pusher-websocket-android | WebSocket only |
| Flutter | pusher_channels_flutter | WebSocket only |
Mobile + SSL
Always use TLS (wss://) for mobile connections. Cellular networks often run transparent proxies that break plain WebSocket connections. Soketify enforces TLS on ws.soketify.com with no additional configuration needed.
Other Environments
Any TCP-capable runtime can connect to Soketify, including Node.js servers (via pusher-js in Node mode or the pusher server library), IoT devices, Arduino, and desktop apps using WebSocket client libraries. The protocol is an open standard.
Don't see what you need?
If you are looking for a specific Pusher feature and are not sure whether Soketify supports it, email us at support@soketify.com. We are 100% Soketi-based so anything Soketi supports, Soketify supports.