27 lines
539 B
TypeScript
27 lines
539 B
TypeScript
"use client";
|
|
import { io, Socket } from "socket.io-client";
|
|
|
|
let socket: Socket | null = null;
|
|
|
|
export function getSocket(): Socket {
|
|
if (typeof window === "undefined") {
|
|
// SSR - return a fake unconnected socket placeholder; never used.
|
|
return {} as Socket;
|
|
}
|
|
if (!socket) {
|
|
socket = io({
|
|
path: "/socket.io",
|
|
transports: ["websocket", "polling"],
|
|
autoConnect: true,
|
|
});
|
|
}
|
|
return socket;
|
|
}
|
|
|
|
export function disconnectSocket() {
|
|
if (socket) {
|
|
socket.disconnect();
|
|
socket = null;
|
|
}
|
|
}
|