Configuration
const client = new SocketClient(
{
url: "http://localhost:3001",
auth: () => ({ token: getToken() }), // re-invoked on every reconnect
ackTimeoutMs: 10_000,
maxQueueSize: 100,
debug: false,
onValidationError: (error) => reportToSentry(error),
},
wsContracts,
{
onConnect: ({ socketId, attempt }) => console.log(socketId, attempt),
onDisconnect: (reason) => console.log(reason),
onConnectError: (error) => console.error(error.message),
middlewares: [logger],
},
);
client.connect();Reading config from the environment is prefix-driven rather than hardcoded to Next.js, and only produces keys for variables that are actually set — so it layers cleanly over explicit config:
import { socketConfigFromEnv } from "@tahanabavi/typesocket";
const client = new SocketClient(
{ url: "/", ...socketConfigFromEnv("NEXT_PUBLIC_SOCKET_") },
wsContracts,
);Recognised suffixes: URL, PATH, AUTO_CONNECT, RECONNECTION,
RECONNECTION_ATTEMPTS, RECONNECTION_DELAY, ACK_TIMEOUT, AUTH_TOKEN,
QUERY_PARAMS (JSON), TRANSPORTS (comma-separated), DEBUG.