Envoyer des événements à un membre
Envoyez des événements personnels, tels que des mises à jour de commande, des notifications de documents partagés ou des changements de solde, directement à un membre. Vous n'avez pas besoin de créer un canal pour chaque personne.
Ce guide explique comment recevoir des événements de membre, les envoyer depuis votre serveur et choisir entre événements de membre et canaux privés.
Avant de commencer
La connexion doit être authentifiée avec une identité de membre. Consultez Exiger des connexions autorisées pour signin() et son endpoint d'autorisation.
Recevoir des événements dans votre application
Une fois que signin() a réussi, bindez le nom de l'événement sur bird.member. Utilisez le même nom que votre serveur envoie comme event. Les événements de membre ne nécessitent aucun abonnement à un canal.
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")
}Le client conserve le binding, se connecte après une reconnexion, puis reprend la livraison des événements de membre.
signin() est asynchrone dans les trois clients. Il renvoie une promesse dans le navigateur, utilise async en Swift et suspend en Kotlin. Appelez-le depuis le contexte asynchrone approprié. Un seul appel active la connexion automatique après les reconnexions suivantes.
Envoyer un événement depuis votre serveur
Appelez members.send avec l'identifiant de l'application, l'identifiant du membre et l'événement :
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 est le member_id signé par votre endpoint d'autorisation. Utilisez l'identifiant existant de votre système s'il respecte les exigences d'identifiant de membre.
Qui reçoit l'événement
- Chaque connexion que ce membre détient, sur tous ses onglets et appareils. Un seul appel, quel que soit le nombre de connexions.
- Personne d'autre, même si l'application d'un autre membre binde le même nom d'événement.
- Rien si le membre n'a aucune connexion active. L'appel réussit quand même, car la livraison n'est pas mise en file d'attente et ne peut pas confirmer la présence. Stockez les notifications durables et chargez-les quand le membre revient.
Événement de membre ou canal privé
| Utilisez un événement de membre | Utilisez un canal privé |
|---|---|
| Le destinataire est la destination : notifications personnelles, changements de compte | La destination est une ressource partagée que plusieurs personnes suivent : un document, une commande, un salon |
| Aucun canal à nommer ou à autoriser | Vous nommez le canal et autorisez chaque abonnement |
| Pas de présence, de compteurs de connexions ni d'événements client | Présence, compteurs de connexions et événements client disponibles |
Étapes suivantes
- Connexions autorisées couvre signin() et l'endpoint d'authentification de membre.
- Terminer les connexions d'un membre ferme toutes les connexions que détient un membre.
- Envoyer un événement à un membre est la référence complète de API.
Ressources associées
Poursuivez avec la documentation, les guides et les exemples sur ce sujet. Les ressources sont en anglais.
Explorer la fonctionnalitéRealtimeSuivre le parcours d'apprentissageBuild your first integrationGuide d'implémentationSend your first realtime event
Essayez la pratique et obtenez un guide d'implémentation