// Socket.IO client singleton — import this anywhere to get the shared socket import { io, Socket } from "socket.io-client"; const API_URL = process.env.NEXT_PUBLIC_API_URL ?? "http://localhost:8000"; let socket: Socket | null = null; export function getSocket(): Socket { if (!socket) { socket = io(API_URL, { transports: ["websocket", "polling"], autoConnect: true, reconnectionAttempts: 5, reconnectionDelay: 1500, }); socket.on("connect", () => { console.log("[Socket.IO] connected:", socket?.id); }); socket.on("disconnect", (reason) => { console.log("[Socket.IO] disconnected:", reason); }); socket.on("connect_error", (err) => { console.warn("[Socket.IO] connection error:", err.message); }); } return socket; } export function joinNegotiation(negotiationId: string) { getSocket().emit("join_negotiation", { negotiation_id: negotiationId }); } export function leaveNegotiation(negotiationId: string) { getSocket().emit("leave_negotiation", { negotiation_id: negotiationId }); }