"use client"; import { useState, useEffect, useRef } from "react"; export default function WebSocketTest() { const [isConnected, setIsConnected] = useState(false); const [messages, setMessages] = useState([]); const [mounted, setMounted] = useState(false); const wsRef = useRef(null); // Ensure we're mounted on client before connecting useEffect(() => { setMounted(true); }, []); useEffect(() => { // Only connect after component is mounted on client if (!mounted) return; // Try connecting to test server on port 8770 try { const ws = new WebSocket('ws://localhost:8770'); ws.onopen = () => { console.log('Test WebSocket connected!'); setIsConnected(true); wsRef.current = ws; // Send test message ws.send(JSON.stringify({ type: 'test', message: 'Hello from client!' })); }; ws.onmessage = (event) => { console.log('Test WebSocket received:', event.data); setMessages(prev => [...prev, event.data]); }; ws.onerror = (error) => { console.error('Test WebSocket error:', error); setIsConnected(false); }; ws.onclose = () => { console.log('Test WebSocket closed'); setIsConnected(false); }; } catch (error) { console.error('Failed to create WebSocket:', error); } return () => { if (wsRef.current) { wsRef.current.close(); } }; }, [mounted]); // Don't render WebSocket status until mounted to avoid hydration issues if (!mounted) { return (

WebSocket Test

Status: Loading...
); } return (

WebSocket Test

Status: {isConnected ? 'Connected' : 'Disconnected'}
Messages: {messages.length}
); }