import { useWebSocket } from "@/hooks/useWs"; import { useState } from "react"; type WidgetProps = { url: string; protocols?: string | string[]; }; export default function WebSocketWidget({ url, protocols }: WidgetProps) { const { status, retryCount, lastMessage, error, bufferedAmount, send, reconnectNow, close, } = useWebSocket({ url, protocols, onMessage: (ev) => { // Example: auto reply to pings console.log(ev.data, "ws event"); if ( typeof ev.data === "string" && // ev.data.toLowerCase().includes("ping") ev.data.toLowerCase().trim() == "ping" ) { try { console.log("sending pong"); send("pong"); } catch {} } }, }); const [outbound, setOutbound] = useState(""); return (

WebSocketWidget

{status.toUpperCase()} {retryCount ? `(retry ${retryCount})` : ""}
URL: {url}
Buffered: {bufferedAmount} bytes
{error && (
Error:{" "} {"message" in error ? (error as any).message : String(error.type || "error")}
)}
Last message:
{lastMessage ? typeof lastMessage.data === "string" ? lastMessage.data : "(binary)" : "—"}
{ e.preventDefault(); if (!outbound) return; send(outbound); setOutbound(""); }} > setOutbound(e.target.value)} />
Usage
          {`import WebSocketWidget from "./WebSocketWidget";

export default function App() {
  return (
    
); } `}
); }