Soham Waghmare
feat: agent mode
7d94a77
import { io, Socket } from "socket.io-client";
let socket: Socket | null = null;
let eventSource: EventSource | null = null;
export const initializeSocket = (url?: string) => {
// In production (Docker), use the same host where the frontend is served
// This will route through nginx proxy to the backend
const socketUrl = url || process.env.NEXT_PUBLIC_KNET_BACKEND || (typeof window !== 'undefined' ? window.location.origin : "http://127.0.0.1:3000");
if (!socket) {
socket = io(socketUrl, {
transports: ["websocket"],
reconnection: true,
reconnectionAttempts: 5,
reconnectionDelay: 1000,
path: "/socket.io/",
});
}
return socket;
};
export const initializeSse = (url: string) => {
eventSource = new EventSource(url);
return eventSource;
};
export const closeSse = () => {
if (eventSource) {
eventSource.close();
eventSource = null;
}
};
export const getSocket = () => {
if (!socket) {
throw new Error("Socket not initialized. Call initializeSocket first.");
}
return socket;
};
export const disconnectSocket = () => {
if (socket) {
socket.disconnect();
socket = null;
}
};