Live updates for every screen.
One small, fast WebSocket server.
EarlyPusher pushes events from the EarlyConnect and EarlyRepair servers to the browsers of your agents, technicians and dispatchers in a moment: a new ticket, a chat message, a status change. It speaks the Pusher protocol, so the existing code only needs another host.
Everything a live screen needs
EarlyPusher replaces the hosted pusher.com subscription with a server that EarlyConnect runs itself.
Instant delivery
An event published through the REST API reaches every browser subscribed to the channel over its open WebSocket, with no polling.
Drop-in compatible
The official pusher-js browser library, PusherServer for .NET and the pusher Node library keep working. Only the host changes.
Public and private channels
Private channels are checked with the secret of the app: a browser subscribes only with a signature that your own server made for it.
Signed REST API
Every call carries a timestamp, a body hash and an HMAC-SHA256 signature. An unsigned, altered or old request is refused.
Separate apps
TMS, SMS, internal chat and EarlyRepair each use their own app id, key and secret, so one product can never publish into another.
Simple to run
One ASP.NET web app on Azure App Service with a /health check. Idle connections are swept, and a browser that reconnects subscribes again by itself.
Three steps from an event to a screen
Subscribe
The page opens wss://pusher.earlyconnect.com/app/{key} and subscribes to a channel such as company_5_12.
Publish
The server of the product posts the event to /apps/{id}/events with the signed REST API.
Receive
EarlyPusher sends the event to every subscriber of the channel at once, and the page updates its screen.
Point your code to this host
The app id, key and secret of each product are kept by the administrator of EarlyPusher. The key is public, the secret never leaves the servers.
Browser (pusher-js)
const pusher = new Pusher('YOUR_APP_KEY', {
wsHost: 'pusher.earlyconnect.com',
wssPort: 443,
forceTLS: true,
enabledTransports: ['ws', 'wss'],
disableStats: true,
cluster: 'mt1'
});
const channel = pusher.subscribe('company_5_12');
channel.bind('SmsSent', function (data) {
console.log(data);
});
Server (.NET, PusherServer)
var options = new PusherOptions {
HostName = "pusher.earlyconnect.com",
Encrypted = true
};
var pusher = new Pusher(appId, appKey, appSecret, options);
await pusher.TriggerAsync(
"company_5_12", "SmsSent",
new { Message = "Hello" });
Limits and what is not supported
Same limits as pusher.com
- Event data up to 10 KB
- Up to 100 channels per event, 10 events per batch
- Channel names of 1 to 200 characters: letters, digits and
-_=@,.; - Signed requests only, within 10 minutes of the server time
Not supported
- Presence channels and the user lists of a channel
- Client events (
client-...) - Webhooks
- Message history: an event is delivered to the browsers connected at that moment, so a page that reconnects should reload its data