Janaxx's picture
fix: dynamic WebSocket URL for local and production
364ff8c
Raw
History Blame Contribute Delete
1.01 kB
const getWsUrl = () => {
// In production (HuggingFace), use the same host
if (window.location.hostname !== "localhost") {
const protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
return `${protocol}//${window.location.host}/ws`;
}
// Local development
return "ws://localhost:8000/ws";
};
const WS_URL = getWsUrl();
export function createSocket(onResult, onError) {
const ws = new WebSocket(WS_URL);
ws.onopen = () => {
console.log("WebSocket connected to", WS_URL);
};
ws.onmessage = (event) => {
try {
const data = JSON.parse(event.data);
onResult(data);
} catch (e) {
console.error("Failed to parse server response", e);
}
};
ws.onerror = (err) => {
console.error("WebSocket error", err);
if (onError) onError(err);
};
ws.onclose = () => {
console.log("WebSocket disconnected");
};
ws.sendAudio = (buffer) => {
if (ws.readyState !== WebSocket.OPEN) return;
ws.send(buffer);
};
return ws;
}