Skip to main content
Markdown

Sending from your server

Your server sends to rooms and to users with its secret, the same way whether a browser or an app gets it (sending in depth).

To a room​

await realtime.to( 'order:1042' ).emit( 'updated', { status: 'shipped' } );
rt.join("order:1042").on("updated") { data, _ in status = data["status"]?.string ?? status }

Not back to the app that caused it​

When the app asks your server to change something, it sends its own name on the connection, rt.tab, and your server leaves it out of the emit: the app has already shown the change.

var request = URLRequest(url: server.appendingPathComponent("orders/1042/status"))
request.httpMethod = "POST"
request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
request.setValue(rt.tab, forHTTPHeaderField: "X-Realtime-Tab")
await realtime.to( 'order:1042' ).except( req.get( 'x-realtime-tab' ) ).emit( 'updated', { status } );

To a user​

What only one user should get, on every page and app they have open, without a room of yours:

await realtime.toUser( 42 ).emit( 'notice', { text: 'Your order shipped' } );
rt.on("notice") { data, _ in toast(data["text"]?.string ?? "") }
for await (notice, _) in rt.events("notice") { toast(notice["text"]?.string ?? "") } // or as a sequence

It reaches the app while it is connected. This SDK has no push yet: an app that is closed, or long in the background, hears it next time it opens only if it was also kept in the history of a room.

Webhooks​

What apps and pages send to rooms, and who comes online, reaches your server by webhook, as for your web pages (webhooks).