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.
Add com.pusher:pusher-java-client to build.gradle. Then set setHost("ws.soketify.com"), setWsPort(443), setWssPort(443) and setUseTLS(true) on PusherOptions, and DELETE your setCluster(...) call: in this SDK setCluster overwrites the host with ws-<cluster>.pusher.com, so leaving it in place points your app at Pusher's servers instead of ours. See the Android section of our Migration guide.
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). Always available: no app setting to turn on. Needs a /pusher/user-auth endpoint returning a signed token, and it is what enables sendToUser, #server-to-user- channels, terminate_connections and watchlist events. Turn on Authorized connections in App Settings if you want to REQUIRE it, which closes any connection that does not sign in. Not the same as channel authorization.
Notifies you when specific users go online or offline across any connection. Requires user authentication (pusher.signin). Turn on Watchlist events in App Settings and return a "watchlist" array of user ids inside user_data from your /pusher/user-auth endpoint. On signin you receive the current state of everyone you watch, then one event per transition.
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 Soketify.
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 Soketify. 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 Soketify.
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. Two libraries spell that option differently: on .NET (PusherServer) it is HostName, with no port and no scheme in the value and Encrypted = true for https, and on the Android/Java client it is setHost(), which you must not combine with setCluster() because setCluster overwrites the host. Both are shown in the Migration guide.
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 |
Enabling the HTTP fallbacks
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 | com.pusher:pusher-java-client | 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. If it is part of the Pusher Channels protocol, it works on Soketify.