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.
22 lines (21 loc) • 810 B
JavaScript
import { useEffect, useRef } from "react";
import { useSocketContext } from "../context/SocketContext";
export const useEvent = (event, handler, deps = []) => {
const { socket, connected } = useSocketContext(); // include connected status
const savedHandler = useRef();
useEffect(() => {
savedHandler.current = handler;
}, [handler]);
useEffect(() => {
if (!socket || !connected)
return;
const listener = (...args) => {
var _a;
(_a = savedHandler.current) === null || _a === void 0 ? void 0 : _a.call(savedHandler, ...args);
};
socket.on(event, listener);
return () => {
socket.off(event, listener);
};
}, [socket, event, connected, ...deps]); // add `connected` to dependencies
};