Inviare eventi a un membro
Invia eventi personali, come aggiornamenti sugli ordini, notifiche di documenti condivisi o variazioni di saldo, direttamente a un membro. Non è necessario creare un canale per ogni persona.
Questa guida spiega come ricevere eventi membro, inviarli dal server e scegliere tra eventi membro e canali privati.
Prima di iniziare
La connessione deve avere effettuato l'accesso con un'identità membro. Consulta Richiedere connessioni autorizzate per signin() e il relativo endpoint di autorizzazione.
Ricevere eventi nella tua app
Dopo che signin() ha avuto successo, associa il nome dell'evento su bird.member. Usa lo stesso nome che il server invia come event. Gli eventi membro non richiedono la sottoscrizione a un canale.
import { BirdRealtime } from "@messagebird/realtime";
const bird = new BirdRealtime({
appKey: "your-app-key",
region: "us1",
memberAuthEndpoint: "/bird/auth/member",
});
await bird.signin();
bird.member.bind("order.shipped", (data) => {
showToast(`Order ${data.order_id} is on its way`);
});import BirdRealtime
let bird = BirdRealtime(options: .init(
appKey: "your-app-key",
region: "us1",
memberAuthEndpoint: URL(string: "https://your-backend.example.com/bird/auth/member")
))
let me = try await bird.signin()
print("signed in as", me.memberId)
bird.member.bind("order.shipped") { data in
let orderId = (data as? [String: Any])?["order_id"] as? String ?? ""
showToast("Order \(orderId) is on its way")
}import com.bird.realtime.BirdRealtime
import com.bird.realtime.BirdRealtimeOptions
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
val bird = BirdRealtime(
BirdRealtimeOptions(
appKey = "your-app-key",
region = "us1",
memberAuthEndpoint = "https://your-backend.example.com/bird/auth/member",
)
)
val me = bird.signin() // suspending
println("signed in as ${me.memberId}")
bird.member.bind("order.shipped") { data ->
val orderId = data?.jsonObject?.get("order_id")?.jsonPrimitive?.content
showToast("Order $orderId is on its way")
}Il client mantiene l'associazione, effettua l'accesso dopo la riconnessione e riprende la consegna degli eventi membro.
signin() è asincrono in tutti e tre i client. Restituisce una promise nel browser, usa async in Swift e sospende in Kotlin. Chiamalo dal contesto asincrono appropriato. Una singola chiamata attiva l'accesso automatico dopo le riconnessioni successive.
Inviare un evento dal server
Chiama members.send con l'ID app, l'ID membro e l'evento:
await bird.realtime.members.send("rap_01krdgeqcxet5s7t44vh8rt9mg", "u_42", {
event: "order.shipped",
data: { order_id: "ord_123" },
});client.realtime.members.send(
"rap_01krdgeqcxet5s7t44vh8rt9mg",
"u_42",
event="order.shipped",
data={"order_id": "ord_123"},
)err = client.Realtime.Members.Send(context.Background(), "rap_01krdgeqcxet5s7t44vh8rt9mg", "u_42", bird.RealtimeMemberSendParams{
Event: "order.shipped",
Data: map[string]any{"order_id": "ord_123"},
})$bird->realtime->members->send('rap_01krdgeqcxet5s7t44vh8rt9mg', 'u_42', (new RealtimeMemberPublish())
->setEvent('order.shipped')
->setData(['order_id' => 'ord_123']));curl -X POST \
https://us1.platform.bird.com/v1/realtime/apps/rap_01krdgeqcxet5s7t44vh8rt9mg/members/u_42/events \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "X-Realtime-Key: $BIRD_REALTIME_KEY" \
-H "X-Realtime-Secret: $BIRD_REALTIME_SECRET" \
-H "Content-Type: application/json" \
-d '{ "event": "order.shipped", "data": { "order_id": "ord_123" } }'u_42 è il member_id firmato dal tuo endpoint di autorizzazione. Usa l'identificativo esistente del tuo sistema se soddisfa i requisiti per l'ID membro.
Chi riceve l'evento
- Ogni connessione attiva del membro, su tutte le schede e i dispositivi. Una sola chiamata, indipendentemente dal numero di connessioni.
- Nessun altro, anche se l'app di un altro membro associa lo stesso nome evento.
- Niente se il membro non ha connessioni attive. La chiamata ha comunque successo perché la consegna non viene accodata e non può confermare la presenza online. Salva le notifiche persistenti e caricale quando il membro torna.
Evento membro o canale privato
| Usa un evento membro | Usa un canale privato |
|---|---|
| Il destinatario è la destinazione: notifiche personali, modifiche all'account | La destinazione è una risorsa condivisa osservata da più persone: un documento, un ordine, una stanza |
| Nessun canale da nominare o autorizzare | Assegni un nome al canale e autorizzi ogni sottoscrizione |
| Nessuna presence, conteggio connessioni o eventi client | Presence, conteggio connessioni ed eventi client sono disponibili |
Prossimi passi
- Connessioni autorizzate tratta signin() e l'endpoint di autenticazione membro.
- Terminare le connessioni di un membro chiude ogni connessione attiva del membro.
- Inviare un evento a un membro è il riferimento completo di API.
Risorse correlate
Prosegui con la documentazione, le guide e gli esempi per questo argomento. Le risorse sono in inglese.
Esplora la funzionalitàRealtimeSegui il percorso di apprendimentoBuild your first integrationGuida all'implementazioneSend your first realtime event
Prova l'esercitazione e ottieni un brief di implementazione