Docs/Getting Started
Migration Guide
Pusher Channels to Socketo migration reference.
Compatibility Guarantee
Socketo implements the Pusher Channels Protocol v7 specification. Existing client applications (pusher-js, Laravel Echo, mobile SDKs) and server broadcasting drivers require zero code changes—only connection host and port settings are updated.
Environment Variable Mapping
| Variable | Pusher Default | Socketo Cloud | Socketo Local CLI |
|---|---|---|---|
| App Key | PUSHER_APP_KEY | app_... (app.id) | local |
| App Secret | PUSHER_APP_SECRET | secret_... | local |
| App ID | PUSHER_APP_ID | app_... (matches Key) | local |
| WS Host | ws-{cluster}.pusher.com | wss.socketo.dev | localhost |
| WS Port | 443 | 443 | 8787 |
| REST Host | api-{cluster}.pusher.com | api.socketo.dev | localhost |
| REST Port | 443 | 443 | 8787 |
| Cluster | e.g. eu, us2 | socketo | local |
| TLS / SSL | true | true | false |
Client Configuration Diff
diff
- const pusher = new Pusher(process.env.PUSHER_KEY, {
- cluster: 'eu',
- })
+ const pusher = new Pusher(process.env.SOCKETO_APP_KEY, {
+ wsHost: 'wss.socketo.dev',
+ wssPort: 443,
+ forceTLS: true,
+ cluster: 'socketo',
+ enabledTransports: ['ws'],
+ })Backend Configuration Diff
diff
- const pusher = new Pusher({
- appId: process.env.PUSHER_APP_ID,
- key: process.env.PUSHER_KEY,
- secret: process.env.PUSHER_SECRET,
- cluster: 'eu',
- useTLS: true,
- })
+ const pusher = new Pusher({
+ appId: process.env.SOCKETO_APP_KEY,
+ key: process.env.SOCKETO_APP_KEY,
+ secret: process.env.SOCKETO_APP_SECRET,
+ host: 'api.socketo.dev',
+ useTLS: true,
+ })Feature Support Checklist
| Feature | Supported | Notes |
|---|---|---|
| Public Channels | Yes | Fully supported |
| Private Channels | Yes | Standard HMAC-SHA256 authorization |
| Presence Channels | Yes | Up to 100 concurrent members per channel |
Client Events (client-*) | Yes | Rate limited to 50 events / 10s per socket |
| Server Event Triggers | Yes | Single and multi-channel (trigger) |
| Batch Event Triggers | Yes | Up to 10 events per batch (triggerBatch) |
User Sign-in (pusher:signin) | Yes | #server-to-user-<id> routing |
Direct User Events (sendToUser) | Yes | Delivered to pusher.user.bind() |
| User Connection Termination | Yes | POST /apps/:id/users/:id/terminate_connections |
| Outbound Webhooks | Yes | Occupancy, presence roster, and client events |
Encrypted Channels (private-encrypted-*) | No | End-to-end TweetNaCl encryption not implemented |
Cache Channels (cache-*) | No | Channel join message caching not implemented |
Watchlist Events (pusher:watchlist) | No | User presence monitoring outside channels not implemented |