@well-do-it-too/ts-websocket-client
v1.0.7
Published
Robust TypeScript WebSocket client with auto-reconnection for React, Node.js, and web projects. Supports event handling and connection management.
Downloads
5
Maintainers
Readme
TypeScript WebSocket Client
A robust and flexible WebSocket client implementation in TypeScript, designed for use in React, Node.js, and web projects. Based on https://github.com/Well-do-it-too/ts-universal-package
Features
- Easy-to-use WebSocket client implementation
- Automatic reconnection with exponential backoff
- Event-based architecture for easy integration
- TypeScript support for better developer experience
- Compatible with React, Node.js, and web projects
- Customizable logging and debugging options
Installation
npm install @well-do-it-too/ts-websocket-client
or
yarn add @well-do-it-too/ts-websocket-client
Usage
Basic Example
Here's a basic example of how to use the WebSocket client:
import { WebSocketClient } from '@well-do-it-too/ts-websocket-client';
const client = new WebSocketClient({
connectionName: 'MyConnection',
url: 'wss://echo.websocket.org',
debugging: true,
onOpened: (info) => console.log('Connected:', info),
onClosed: (info) => console.log('Disconnected:', info),
onError: (info) => console.error('Error:', info),
onUpdate: (info) => console.log('Received:', info.data),
});
client.open();
// Send a message
client.sendMessage('Hello, WebSocket!');
// Close the connection
client.close();
Node.js Example
Here's an example of how to use the WebSocket client in a Node.js environment:
import { WebSocketClient } from '@well-do-it-too/ts-websocket-client';
const client = new WebSocketClient({
connectionName: 'NodeConnection',
url: 'wss://echo.websocket.org',
debugging: true,
onOpened: (info) => {
console.log('Connected:', info);
// Send a message every 5 seconds
setInterval(() => {
client.sendMessage('Ping from Node.js');
}, 5000);
},
onClosed: (info) => console.log('Disconnected:', info),
onError: (info) => console.error('Error:', info),
onUpdate: (info) => console.log('Received:', info.data),
});
client.open();
// Handle process termination
process.on('SIGINT', () => {
console.log('Closing connection...');
client.close();
process.exit();
});
React Example
Here's an example of how to use the WebSocket client in a React component:
import React, { useEffect, useState } from 'react';
import { WebSocketClient } from '@well-do-it-too/ts-websocket-client';
const WebSocketComponent: React.FC = () => {
const [client, setClient] = useState<WebSocketClient | null>(null);
const [messages, setMessages] = useState<string[]>([]);
useEffect(() => {
const wsClient = new WebSocketClient({
connectionName: 'ReactConnection',
url: 'wss://echo.websocket.org',
debugging: true,
onOpened: (info) => console.log('Connected:', info),
onClosed: (info) => console.log('Disconnected:', info),
onError: (info) => console.error('Error:', info),
onUpdate: (info) => {
setMessages((prevMessages) => [...prevMessages, info.data as string]);
},
});
setClient(wsClient);
wsClient.open();
return () => {
wsClient.close();
};
}, []);
const sendMessage = () => {
if (client) {
client.sendMessage('Hello from React!');
}
};
return (
<div>
<button onClick={sendMessage}>Send Message</button>
<ul>
{messages.map((message, index) => (
<li key={index}>{message}</li>
))}
</ul>
</div>
);
};
export default WebSocketComponent;
API
WebSocketClient
The main class for creating and managing WebSocket connections.
Constructor
new WebSocketClient(options: WebSocketOptions)
options
: Configuration options for the WebSocket client
Methods
open()
: Opens the WebSocket connectionclose()
: Closes the WebSocket connectionbreakConnection()
: Forcibly breaks the connectionsendMessage(data: string)
: Sends a message through the WebSocketsubscribe(data: string)
: Subscribes to a topic (stores the request)unsubscribe(data: string)
: Unsubscribes from a topicgetInfo()
: Returns current connection informationgetStoredRequests()
: Returns the set of stored requestsclearStoredRequests()
: Clears all stored requests
Development
To set up the development environment:
- Clone the repository
- Install dependencies:
npm install
oryarn install
- Run tests:
npm test
oryarn test
- Build the package:
npm run build
oryarn build
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the ISC License.
Links
Developed with ❤️ by Well-do-it-too