Skip to main content

useWebSocket()

The useWebSocket() hook manages WebSocket connections, providing automatic reconnection and state management. It includes functions to send messages and callbacks for different WebSocket events.

Import

import { useWebSocket } from 'react-haiku';

Usage

import { useWebSocket } from './path-to-your-hook';

export const WebSocketComponent = () => {
const { lastMessage, status, sendMessage } = useWebSocket(
'wss://example.com/socket',
{
maxReconnectAttempts: 5,
reconnectDelay: (attempt) => Math.min(5000, Math.pow(2, attempt) * 1000),
onOpen: () => console.log('WebSocket opened!'),
onMessage: (message) => console.log('Received message:', message),
onError: (error) => console.error('WebSocket error:', error),
onClose: (event) => console.log('WebSocket closed:', event),
},
);

return (
<div>
<h3>WebSocket Status: {status}</h3>
<p>Last message: {lastMessage}</p>
<button onClick={() => sendMessage('Hello WebSocket!')}>
Send Message
</button>
</div>
);
};

Parameters

  • url (string) – The WebSocket URL to connect to.
  • options (object) – Optional configuration options:
    • maxReconnectAttempts (number) – Max attempts for reconnection. Default is 5.
    • reconnectDelay (function) – A function to calculate the delay between reconnection attempts. Default is exponential backoff.
    • onOpen (function) – Callback function triggered when the WebSocket connection is opened.
    • onMessage (function) – Callback function triggered when a message is received.
    • onError (function) – Callback function triggered when an error occurs.
    • onClose (function) – Callback function triggered when the WebSocket connection is closed.