Streaming
Async iterator SSE streaming for scene events
Usage
for await (const event of rodeo.scenes.stream(sceneId)) {
console.log(event.type, event.data);
}Returns AsyncIterable<SceneEvent>.
SceneEvent
interface SceneEvent {
type: string;
beat_id?: string;
data?: Record<string, unknown>;
timestamp?: string;
}Event handling
for await (const event of rodeo.scenes.stream(sceneId)) {
switch (event.type) {
case "beat_fired":
console.log(`Beat ${event.beat_id} fired`);
break;
case "sensor_reading":
handleSensorReading(event.data);
break;
case "adaptation_triggered":
console.log(`Adapting: ${event.data?.rule?.action}`);
break;
case "scene_completed":
console.log(`Scene finished: ${event.data?.outcome}`);
break;
case "scene_aborted":
console.log("Scene was aborted");
break;
}
}Lifecycle
The stream closes when the scene completes, aborts, or expires. Heartbeat events fire every 15 seconds to keep the connection alive.