Realtime TIP_ALERT
Dostępne entrypointy
Section titled “Dostępne entrypointy”Z klienta auth
Section titled “Z klienta auth”const listener = await client.tipAlerts.createListener();Ten wariant najpierw odczytuje bieżącego użytkownika przez client.me.get(), a potem tworzy listener dla jego userId.
Klient auth udostępnia też sterowanie aktualnie wyświetlanym alertem:
await client.tipAlerts.skipCurrent();Ta operacja używa osobnego kanału komend websocket i skipuje tip, który jest aktualnie pokazywany przez alerty.
Z klienta auth lub publicznego na podstawie widget URL
Section titled “Z klienta auth lub publicznego na podstawie widget URL”const listener = client.tipAlerts.fromWidgetUrl( "https://widgets.tipply.pl/TIP_ALERT/user-123",);Z klienta publicznego i znanego userId
Section titled “Z klienta publicznego i znanego userId”const listener = publicClient.user(asUserId("user-123")).tipAlerts.createListener();Lifecycle listenera
Section titled “Lifecycle listenera”listener.on("ready", () => { console.log("Połączono z socketem");});
listener.on("donation", (donation) => { console.log(donation.nickname, donation.amount);});
listener.on("disconnect", (reason) => { console.log("Rozłączono:", reason);});
listener.on("error", (error) => { console.error(error);});
await listener.connect();Publiczny kontrakt listenera
Section titled “Publiczny kontrakt listenera”interface TipAlertsListener { readonly userId: UserId; readonly connected: boolean; connect(): Promise<void>; destroy(): void; on(event, listener): this; once(event, listener): this; off(event, listener): this; removeAllListeners(event?): this;}Dostępne eventy
Section titled “Dostępne eventy”readydonationdisconnecterror
Kształt eventu donation
Section titled “Kształt eventu donation”Payload jest normalizowany do typowanego TipAlertDonation. Zawiera między innymi:
idreceiverIdnicknameemailmessageamountcommissiontestresentsourcepaymentIdaudioUrlgoalIdgoalTitlecreatedAtmoderatedAt- pola TTS
rawz oryginalnym payloadem widgetu
Opcje połączenia
Section titled “Opcje połączenia”type TipAlertsListenerOptions = { reconnect?: boolean;};Przykład:
const listener = publicClient.tipAlerts.fromWidgetUrl( "https://widgets.tipply.pl/TIP_ALERT/user-123", { reconnect: false },);Komendy realtime
Section titled “Komendy realtime”skipCurrent() jest dostępne tylko na kliencie auth i działa dla bieżącej sesji użytkownika:
await client.tipAlerts.skipCurrent();Pod spodem SDK łączy się z https://ws.tipply.pl/socket.io i wysyła komendę skipMessage.
Domknięcie procesu
Section titled “Domknięcie procesu”Przy dłużej działających skryptach warto jawnie niszczyć listener:
const shutdown = () => { listener.destroy(); process.exit(0);};
process.on("SIGINT", shutdown);process.on("SIGTERM", shutdown);Obsługiwane środowiska
Section titled “Obsługiwane środowiska”- Bun
- Node.js
- przeglądarki
Edge runtime’y nie są oficjalnym targetem websocketów dla tego API.