Skip to content

Realtime TIP_ALERT

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",
);
const listener = publicClient.user(asUserId("user-123")).tipAlerts.createListener();
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();
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;
}
  • ready
  • donation
  • disconnect
  • error

Payload jest normalizowany do typowanego TipAlertDonation. Zawiera między innymi:

  • id
  • receiverId
  • nickname
  • email
  • message
  • amount
  • commission
  • test
  • resent
  • source
  • paymentId
  • audioUrl
  • goalId
  • goalTitle
  • createdAt
  • moderatedAt
  • pola TTS
  • raw z oryginalnym payloadem widgetu
type TipAlertsListenerOptions = {
reconnect?: boolean;
};

Przykład:

const listener = publicClient.tipAlerts.fromWidgetUrl(
"https://widgets.tipply.pl/TIP_ALERT/user-123",
{ reconnect: false },
);

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.

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);
  • Bun
  • Node.js
  • przeglądarki

Edge runtime’y nie są oficjalnym targetem websocketów dla tego API.