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

JavaScript / BrowserCovered

Our Quick Start covers JavaScript. Use pusher-js with wsHost: "ws.soketify.com".

iOS (Swift)Pusher docs

Install pusher-websocket-swift via SPM. Replace the cluster with wsHost: "ws.soketify.com" and set useTLS: true.

Android (Kotlin / Java)Covered

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.

FlutterPusher docs

Use pusher_channels_flutter. Pass host: "ws.soketify.com" and cluster: "default".

React NativePusher docs

Same as the JavaScript quick start; pusher-js works in React Native. Point wsHost to ws.soketify.com.

Getting Started: Use Case Quick Starts

Realtime ChartPusher docs

Fully compatible: swap the Pusher app credentials for your Soketify credentials and update wsHost.

Realtime User ListPusher docs

Uses presence channels, fully supported. See our Channels and Authentication docs.

Using Channels: Client SDK

Client API OverviewCovered

Covers pusher-js API: bind, unbind, subscribe, unsubscribe. All methods work identically.

ConnectionCovered

Fully covered: states, socket_id, error codes, disconnection.

User Authentication (pusher.signin)Pusher docs

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.

Watchlist EventsPusher docs

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.

FunctionsNot supported

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.

Authorized ConnectionsPusher docs

Connection-level authorization that locks a connection to a specific user. Implemented alongside user authentication. Supported by Soketify.

Channels (all types)Covered

All five channel types (public, private, encrypted, presence, cache) are documented here.

EventsCovered

Binding, unbinding, system events, client events, naming rules: all covered.

Global ConfigurationPusher docs

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.

WebSocket FallbacksPusher docs

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.

Device CompatibilityPusher docs

See the Device Compatibility section on this page.

Server API

HTTP API InteractionCovered

Trigger events, batch trigger, list channels, channel info, presence users.

Authenticating Users (server side)Pusher docs

Server endpoint for connection-level user auth (/pusher/user-auth). Complementary to our Authentication guide which covers channel authorization.

Authorizing Users (channel auth)Covered
Sending Events to Authenticated UsersPusher docs

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.

Terminating User ConnectionsPusher docs

Force-disconnect all connections for a given user_id. POST to /apps/{appId}/users/{userId}/terminate_connections. Supported by Soketify.

Excluding Event RecipientsCovered

Pass socket_id to trigger/triggerBatch to exclude the sender. Covered in the Events guide.

Channels Libraries

API Libraries (all official SDKs)Covered

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

Authentication & Authorization SignaturesCovered

Deep-dive into the HMAC-SHA256 signature scheme for both channel auth and REST API auth.

HTTP API Reference (full)Covered
Pusher Channels ProtocolPusher docs

The low-level WebSocket protocol Soketify implements. Only relevant if you are building a custom client library.

Server Library Reference SpecPusher docs

What a conformant Pusher server library must implement. Useful if you are building an SDK.

LoggingPusher docs

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

TransportWhen usedCoverage
WebSocket (ws / wss)All modern browsers~98% of global traffic
xhr_streamingWebSocket blocked (corporate proxies)Fallback via pusher-js
xhr_pollingStreaming also blockedLast-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

PlatformSDKTransport
iOS / macOSpusher-websocket-swiftWebSocket only
Androidcom.pusher:pusher-java-clientWebSocket only
Flutterpusher_channels_flutterWebSocket 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.