Two-axis tug-of-war — the leading side grows taller and wider, the other shrinks.
A match engine calls goals, penalties, big saves and fights into the chat feed.
Seat-tagged banter down the middle, with the crowd reacting to every event.
Banner space and brandable beats — e.g. a power play "presented by."
Joining the game’s chat room and subscribing to its live event stream is just a few lines — one handler delivers every fan message and automated match call. Cheers are simply telemetry increments that drive the meters.
import { ChatClient, Services } from 'sportstalk-sdk';
const config = { appId: 'YOUR_APP_ID', apiToken: 'YOUR_API_KEY' };
const game = 'game:bruins-leafs'; // chat room + telemetry context
// Join the room and subscribe — one handler gets every message and match call
const chat = ChatClient.init(config, {
onChatEvent: (event) => addToFeed(event)
});
await chat.joinRoom(game);
chat.startListeningToEventUpdates();
// Each Cheer tap is just one telemetry increment that feeds the meters
const telemetry = new Services.TelemetryService(config);
cheerBtn.onclick = () => telemetry.increment(game, 'cheer:home', { userid: 'fan-8417' });
npm sportstalk-sdk · ChatClient.joinRoom + startListeningToEventUpdates · same idea on web, mobile, or server.