Synthra provides WebSocket-based streaming for real-time bidirectional communication. Ideal for chat interfaces and live updates.
Connection
const stream = agent.createStream({
sessionId: 'session_abc123def456',
autoReconnect: true,
heartbeatInterval: 30000
});
stream.on('connected', () => {
console.log('Stream connected');
});
stream.on('error', (error) => {
console.error('Stream error:', error);
});
Sending Messages
stream.send({
type: 'message',
content: 'Hello, Synthra!',
metadata: {
timestamp: Date.now()
}
});
Receiving Messages
stream.on('message', (message) => {
console.log(`${message.role}: ${message.content}`);
});
stream.on('typing', () => {
console.log('Assistant is typing...');
});
stream.on('complete', () => {
console.log('Message complete');
});
Streaming Responses
stream.send({
type: 'message',
content: 'Write a long story',
streaming: true
});
let fullResponse = '';
stream.on('chunk', (chunk) => {
fullResponse += chunk.content;
process.stdout.write(chunk.content);
});
Reconnection
const stream = agent.createStream({
sessionId: 'session_abc123def456',
autoReconnect: true,
maxReconnectAttempts: 5,
reconnectDelay: 1000
});
stream.on('reconnecting', (attempt) => {
console.log(`Reconnecting (attempt ${attempt}/5)...`);
});
React Integration
import { useEffect, useState } from 'react';
function ChatComponent({ sessionId }) {
const [messages, setMessages] = useState([]);
const [stream, setStream] = useState(null);
useEffect(() => {
const newStream = agent.createStream({ sessionId });
newStream.on('message', (message) => {
setMessages(prev => [...prev, message]);
});
setStream(newStream);
return () => {
newStream.close();
};
}, [sessionId]);
return (
<div>
{messages.map(msg => (
<div key={msg.id}>{msg.content}</div>
))}
</div>
);
}
| Metric | Value |
|---|
| Connection establishment | under 100ms |
| Message latency | under 10ms |
| Throughput | 1,000 msg/s per connection |
Limits
| Tier | Max Connections | Messages/sec | Max Message Size |
|---|
| Free | 2 | 10 | 10 KB |
| Pro | 10 | 100 | 100 KB |
| Enterprise | 100 | 1,000 | 1 MB |
WebSocket connections count toward your concurrent connection limit.
Implement proper error handling and reconnection logic for production environments.