Socketly

Hosted realtime for developers. You install one package, hold two keys, and get channels, presence, and metered delivery without running a socket server.

See it work

Two separate connections to the same channel, running against the live edge from this page. Send a message as either person — it leaves your browser, reaches the server, and comes back over a socket.

Connecting…
public-docs-demo
Ada

Nothing yet. Send from either side.

Grace

Nothing yet. Send from either side.

Each pane is its own connection. Sending publishes through this site's server using the secret key, and both panes receive it back over their own socket.

How it fits together

Your browser code holds a public key and opens a connection. Your backend holds a secret key and does two things: it publishes events, and it signs authorization for any channel that is not public.

That split is the whole security model. The public key identifies your app and nothing more — anyone who reads your bundle can see it, and it grants them access to public channels only. Everything private goes through a signature your own backend issues, because your backend is the only thing that knows who your users are.

Channels

PrefixWho can subscribePresence roster
public-Anyone with the public keyNo
private-Only with a signature from your backendNo
presence-Only with a signature, plus a user identityYes

Channel names must carry one of these prefixes. An unprefixed name is rejected, because it is almost always someone assuming privacy they do not have.

Next