Events naar een member sturen
Stuur persoonlijke events, zoals orderupdates, meldingen over gedeelde documenten of saldowijzigingen, rechtstreeks naar een member. Je hoeft niet voor elke persoon een channel aan te maken.
Deze gids legt uit hoe je member-events ontvangt, ze vanaf je server verstuurt en kiest tussen member-events en private channels.
Voordat je begint
De verbinding moet ingelogd zijn met een member-identiteit. Zie Geautoriseerde verbindingen vereisen voor signin() en het autorisatie-endpoint.
Events ontvangen in je app
Nadat signin() slaagt, bind je de eventnaam op bird.member. Gebruik dezelfde naam die je server verstuurt als event. Member-events vereisen geen channelsubscriptie.
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")
}De client behoudt de binding, logt na herverbinding opnieuw in en hervat dan de bezorging van member-events.
signin() is asynchroon in alle drie de clients. In de browser retourneert het een promise, in Swift gebruikt het async en in Kotlin suspendt het. Roep het aan vanuit de juiste asynchrone context. Eén aanroep activeert automatisch inloggen na latere herverbindingen.
Een event versturen vanaf je server
Roep members.send aan met de app-ID, member-ID en het event:
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 is de member_id die door je autorisatie-endpoint is ondertekend. Gebruik de bestaande identifier van je systeem als deze voldoet aan de member-ID-vereisten.
Wie het event ontvangt
- Elke verbinding die dat member heeft, over al diens tabbladen en apparaten. Eén aanroep, ongeacht het aantal verbindingen.
- Niemand anders, zelfs niet als de app van een ander member dezelfde eventnaam bindt.
- Niets als het member geen actieve verbindingen heeft. De aanroep slaagt alsnog, omdat bezorging niet in een wachtrij wordt geplaatst en aanwezigheid niet kan bevestigen. Sla duurzame meldingen op en laad ze wanneer het member terugkeert.
Member of private channel
| Gebruik een member-event | Gebruik een private channel |
|---|---|
| De ontvanger is de bestemming: persoonlijke meldingen, accountwijzigingen | De bestemming is een gedeeld object dat meerdere mensen volgen: een document, een order, een ruimte |
| Geen channel om te benoemen of te autoriseren | Je benoemt het channel en autoriseert elke subscriptie |
| Geen presence, verbindingsaantallen of client-events | Presence, verbindingsaantallen en client-events zijn beschikbaar |
Volgende stappen
- Geautoriseerde verbindingen behandelt signin() en het member-auth-endpoint.
- Memberverbindingen beëindigen sluit elke verbinding die een member heeft.
- Een event naar een member sturen is de volledige API-referentie.
Gerelateerde bronnen
Ga verder met de documentatie, gidsen en voorbeelden voor dit onderwerp. De bronnen zijn in het Engels.
Ontdek de mogelijkheidRealtimeVolg het leerpadBuild your first integrationImplementatiegidsSend your first realtime event
Probeer de oefening en ontvang een implementatieoverzicht