EarlyPusher delivers the live updates of TMS, SMS and EarlyRepair: the screens change the moment something happens.
Real-time messaging. Pusher compatible.

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.

Protocol 7the Pusher WebSocket protocol
REST APIsigned like pusher.com
No databasemessages live in memory only
1 host changeto move an existing app
What it does

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.

How it works

Three steps from an event to a screen

1

Subscribe

The page opens wss://pusher.earlyconnect.com/app/{key} and subscribes to a channel such as company_5_12.

2

Publish

The server of the product posts the event to /apps/{id}/events with the signed REST API.

3

Receive

EarlyPusher sends the event to every subscriber of the channel at once, and the page updates its screen.

For developers

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" });
Good to know

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