UNPKG

socket.io-react-hooks-advanced

Version:

A modular and extensible React + Socket.IO hook library designed for real-world applications. Supports namespaced sockets, reconnection strategies, offline queues, latency monitoring, middleware, encryption, and more.

31 lines (24 loc) 811 B
import {useEffect, useRef} from "react"; import {useSocketContext} from "../context/SocketContext"; type Handler = (...args: any[]) => void; export const useEvent = ( event: string, handler: Handler, deps: any[] = [] ) => { const {socket, connected} = useSocketContext(); // include connected status const savedHandler = useRef<Handler>(); useEffect(() => { savedHandler.current = handler; }, [handler]); useEffect(() => { if (!socket || !connected) return; const listener: Handler = (...args) => { savedHandler.current?.(...args); }; socket.on(event, listener); return () => { socket.off(event, listener); }; }, [socket, event, connected, ...deps]); // add `connected` to dependencies };