WebSocket Events¶
Real-time test progress via WebSocket.
Connecting¶
const ws = new WebSocket('ws://localhost:8000/ws/test/{chain_id}');
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log(data);
};
Event Types¶
test_start¶
Emitted when a test begins.
{
"type": "test_start",
"chain_id": "abc123",
"prompt_count": 5,
"timestamp": "2024-01-15T10:30:00Z"
}
prompt_start¶
Emitted when a prompt begins processing.
prompt_result¶
Emitted when a prompt completes.
{
"type": "prompt_result",
"chain_id": "abc123",
"prompt_index": 0,
"provider_used": "GPT-4",
"success": true,
"latency_ms": 823,
"retries_used": 0,
"total_wait_ms": 0
}
test_complete¶
Emitted when all prompts are done.
{
"type": "test_complete",
"chain_id": "abc123",
"success_rate": 0.8,
"avg_latency_ms": 750,
"total_prompts": 5
}
JavaScript Client¶
function runTest(chainId, promptCount = 5) {
const ws = new WebSocket(`ws://localhost:8000/ws/test/${chainId}`);
ws.onopen = () => {
console.log('Connected to test stream');
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
switch (data.type) {
case 'test_start':
console.log(`Test started: ${data.prompt_count} prompts`);
break;
case 'prompt_result':
console.log(`Prompt ${data.prompt_index}: ${data.success ? '✓' : '✗'} via ${data.provider_used}`);
break;
case 'test_complete':
console.log(`Test complete: ${data.success_rate * 100}% success rate`);
ws.close();
break;
}
};
}