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.

33 lines (32 loc) 1.3 kB
import { useContext, useEffect, useState } from "react"; import { SocketContext } from "../context/SocketContext"; export function useConnectionStatus() { const { socket } = useContext(SocketContext); const [status, setStatus] = useState("connecting"); useEffect(() => { if (!socket) return; const handleConnect = () => setStatus("connected"); const handleDisconnect = () => setStatus("disconnected"); const handleReconnect = () => setStatus("reconnecting"); const handleConnectError = (err) => { if ((err === null || err === void 0 ? void 0 : err.message) === "unauthorized") { setStatus("unauthorized"); } else { setStatus("failed"); } }; socket.on("connect", handleConnect); socket.on("disconnect", handleDisconnect); socket.on("reconnect_attempt", handleReconnect); socket.on("connect_error", handleConnectError); return () => { socket.off("connect", handleConnect); socket.off("disconnect", handleDisconnect); socket.off("reconnect_attempt", handleReconnect); socket.off("connect_error", handleConnectError); }; }, [socket]); return status; }