Skip to main content

WebSocket

Connect to WebSocket for real-time audio streaming.

Connection URL

Use websocket_url from session initialization:

wss://api.scriptix.io/realtime/{session_id}

Connection

JavaScript

const ws = new WebSocket('wss://api.scriptix.io/realtime/session_abc123');

ws.on('open', () => {
console.log('Connected!');
});

ws.on('message', (data) => {
const message = JSON.parse(data);
console.log('Received:', message);
});

ws.on('error', (error) => {
console.error('WebSocket error:', error);
});

ws.on('close', () => {
console.log('Disconnected');
});

Python

import websocket
import json

def on_open(ws):
print("Connected!")

def on_message(ws, message):
data = json.loads(message)
print(f"Received: {data}")

def on_error(ws, error):
print(f"Error: {error}")

def on_close(ws):
print("Disconnected")

ws = websocket.WebSocketApp(
'wss://api.scriptix.io/realtime/session_abc123',
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close
)

ws.run_forever()

Sending Audio

// Send raw PCM audio
ws.send(audioBuffer);

JSON Format

ws.send(JSON.stringify({
type: 'audio',
data: base64EncodedAudio
}));

Receiving Messages

Message Types

ws.on('message', (data) => {
const message = JSON.parse(data);

switch (message.type) {
case 'partial':
console.log('Partial:', message.text);
break;
case 'final':
console.log('Final:', message.text);
break;
case 'error':
console.error('Error:', message.error);
break;
}
});

Connection Management

Reconnection

let reconnectDelay = 1000;
const maxReconnectDelay = 30000;

function connect() {
const ws = new WebSocket(websocketUrl);

ws.on('close', () => {
console.log(`Reconnecting in ${reconnectDelay}ms...`);
setTimeout(connect, reconnectDelay);
reconnectDelay = Math.min(reconnectDelay * 2, maxReconnectDelay);
});

ws.on('open', () => {
reconnectDelay = 1000; // Reset on successful connection
});
}

Graceful Close

ws.send(JSON.stringify({ type: 'end_of_session' }));
ws.close();

Next Steps