Enviando eventos para um membro
Envie eventos pessoais, como atualizações de pedidos, notificações de documentos compartilhados ou alterações de saldo, diretamente para um membro. Você não precisa criar um canal para cada pessoa.
Este guia explica como receber eventos de membro, enviá-los do seu servidor e escolher entre eventos de membro e canais privados.
Antes de começar
A conexão precisa estar autenticada com uma identidade de membro. Consulte Exigindo conexões autorizadas para signin() e seu endpoint de autorização.
Receba eventos no seu app
Depois que signin() for bem-sucedido, vincule o nome do evento em bird.member. Use o mesmo nome que o seu servidor envia como event. Eventos de membro não exigem assinatura de 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")
}O cliente mantém o vínculo, autentica-se após reconectar e então retoma a entrega de eventos de membro.
signin() é assíncrono nos três clientes. Retorna uma promise no navegador, usa async no Swift e suspende no Kotlin. Chame-o a partir do contexto assíncrono apropriado. Uma única chamada ativa a autenticação automática após reconexões futuras.
Envie um evento do seu servidor
Chame members.send com o ID do app, o ID do membro e o 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 é o member_id assinado pelo seu endpoint de autorização. Use o identificador existente do seu sistema se ele atender aos requisitos de ID de membro.
Quem recebe o evento
- Todas as conexões que o membro mantém, em todas as suas abas e dispositivos. Uma chamada, independentemente de quantas conexões existam.
- Ninguém mais, mesmo que o app de outro membro vincule o mesmo nome de evento.
- Nada se o membro não tiver conexões ativas. A chamada ainda é bem-sucedida porque a entrega não é enfileirada e não pode confirmar ocupação. Armazene notificações duráveis e carregue-as quando o membro retornar.
Evento de membro ou canal privado
| Use um evento de membro | Use um canal privado |
|---|---|
| O destinatário é o destino: notificações pessoais, alterações de conta | O destino é algo compartilhado que várias pessoas acompanham: um documento, um pedido, uma sala |
| Nenhum canal para nomear ou autorizar | Você nomeia o canal e autoriza cada assinatura |
| Sem presença, contagem de conexões ou eventos de cliente | Presença, contagem de conexões e eventos de cliente estão disponíveis |
Próximos passos
- Conexões autorizadas aborda signin() e o endpoint de autenticação de membro.
- Encerrando conexões de membro fecha todas as conexões que um membro mantém.
- Enviar um evento para um membro é a referência completa de API.
Recursos relacionados
Continue com a documentação, guias e exemplos sobre este tópico. Os recursos estão em inglês.
Explore a funcionalidadeRealtimeSiga o percurso de aprendizagemBuild your first integrationGuia de implementaçãoSend your first realtime event
Experimente na prática e obtenha um resumo de implementação