Wysyłanie zdarzeń do członka
Wysyłaj osobiste zdarzenia, takie jak aktualizacje zamówień, powiadomienia o udostępnionych dokumentach czy zmiany salda, bezpośrednio do członka. Nie musisz tworzyć kanału dla każdej osoby.
Ten przewodnik wyjaśnia, jak odbierać zdarzenia członka, wysyłać je z serwera i wybierać między zdarzeniami członka a kanałami prywatnymi.
Zanim zaczniesz
Połączenie musi być zalogowane z tożsamością członka. Zobacz Wymaganie autoryzowanych połączeń, aby poznać signin() i jego endpoint autoryzacji.
Odbieranie zdarzeń w aplikacji
Gdy signin() zakończy się powodzeniem, powiąż nazwę zdarzenia z bird.member. Użyj tej samej nazwy, którą serwer wysyła jako event. Zdarzenia członka nie wymagają subskrypcji kanału.
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")
}Klient zachowuje powiązanie, loguje się ponownie po reconnekcie, a następnie wznawia dostarczanie zdarzeń członka.
signin() jest asynchroniczne we wszystkich trzech klientach. W przeglądarce zwraca promise, w Swift używa async, a w Kotlinie zawiesza korutynę. Wywołuj je z odpowiedniego kontekstu asynchronicznego. Jedno wywołanie aktywuje automatyczne logowanie po kolejnych reconnektach.
Wysyłanie zdarzenia z serwera
Wywołaj members.send z identyfikatorem aplikacji, identyfikatorem członka i zdarzeniem:
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 to member_id podpisany przez Twój endpoint autoryzacji. Użyj istniejącego identyfikatora ze swojego systemu, jeśli spełnia wymagania dotyczące identyfikatora członka.
Kto otrzymuje zdarzenie
- Każde połączenie, które ten członek utrzymuje, na wszystkich kartach i urządzeniach. Jedno wywołanie, bez względu na liczbę połączeń.
- Nikt inny, nawet jeśli aplikacja innego członka powiąże tę samą nazwę zdarzenia.
- Nic, jeśli członek nie ma aktywnych połączeń. Wywołanie i tak kończy się powodzeniem, ponieważ dostarczanie nie jest kolejkowane i nie można potwierdzić obecności. Zapisuj trwałe powiadomienia i ładuj je, gdy członek wróci.
Zdarzenie członka czy kanał prywatny
| Użyj zdarzenia członka | Użyj kanału prywatnego |
|---|---|
| Odbiorca jest celem: osobiste powiadomienia, zmiany konta | Celem jest współdzielony zasób obserwowany przez kilka osób: dokument, zamówienie, pokój |
| Nie trzeba nazywać ani autoryzować kanału | Nazywasz kanał i autoryzujesz każdą subskrypcję |
| Brak obecności, liczników połączeń i zdarzeń klienta | Obecność, liczniki połączeń i zdarzenia klienta są dostępne |
Następne kroki
- Autoryzowane połączenia obejmują signin() i endpoint autoryzacji członka.
- Zamykanie połączeń członka zamyka każde połączenie, które członek utrzymuje.
- Wyślij zdarzenie do członka to pełna dokumentacja API.
Powiązane zasoby
Kontynuuj z dokumentacją, przewodnikami i przykładami dotyczącymi tego tematu. Zasoby są w języku angielskim.
Poznaj możliwościRealtimePodążaj ścieżką naukiBuild your first integrationPrzewodnik wdrożeniowySend your first realtime event
Wypróbuj ćwiczenie i uzyskaj brief wdrożeniowy