1.0.0 • Published 10 months ago

@dipen557/chat-sdk v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
10 months ago

Chat SDK Documentation

This SDK provides a simple interface to interact with the WebSocket-based chat system.

1. Server Setup

Ensure your WebSocket server is running and accessible. The server should be configured with:

  • WebSocket endpoint at /ws
  • JWT authentication
  • Message history support
  • Room management

Installation

# If using npm
npm install @dipen557/chat-sdk

# If using yarn
yarn add @dipen557/chat-sdk

Basic Usage

import { ChatSDK } from '@dipen557/chat-sdk';

// Initialize the SDK
const chatSDK = new ChatSDK({
  serverUrl: 'ws://your-server-url',
  token: 'your-jwt-token',
  onError: (error) => console.error('Chat error:', error),
  onConnectionChange: (connected) => console.log('Connection status:', connected)
});

// Connect to the chat server
await chatSDK.connect();

// Listen for messages
chatSDK.on('message', (message) => {
  console.log('New message:', message);
});

// Listen for room access updates
chatSDK.on('roomAccess', (roomIds) => {
  console.log('Available rooms:', roomIds);
});

// Join a room
chatSDK.joinRoom('room-id');

// Send a message
chatSDK.sendMessage('room-id', 'Hello, world!');

// Disconnect when done
chatSDK.disconnect();

React Integration Example

import { useEffect, useState } from 'react';
import { ChatSDK, Message } from '@dipen557/chat-sdk';

function ChatComponent() {
  const [messages, setMessages] = useState<Message[]>([]);
  const [sdk, setSDK] = useState<ChatSDK | null>(null);

  useEffect(() => {
    const chatSDK = new ChatSDK({
      serverUrl: 'ws://your-server-url',
      token: 'your-jwt-token'
    });

    chatSDK.on('message', (message) => {
      setMessages(prev => [...prev, message]);
    });

    chatSDK.connect().catch(console.error);
    setSDK(chatSDK);

    return () => {
      chatSDK.disconnect();
    };
  }, []);

  const sendMessage = (content: string) => {
    sdk?.sendMessage('room-id', content);
  };

  return (
    <div>
      {messages.map(msg => (
        <div key={msg.id}>{msg.content}</div>
      ))}
    </div>
  );
}

Events

The SDK emits the following events:

  • message: Fired when a new message is received
  • roomAccess: Fired when room access information is received
  • history: Fired when message history is received after joining a room
  • error: Fired when an error occurs
  • connectionChange: Fired when the connection status changes

API Reference

Constructor

new ChatSDK(options: ChatSDKOptions)

Options:

  • serverUrl: WebSocket server URL
  • token: JWT authentication token
  • onError?: Error callback function
  • onConnectionChange?: Connection status callback function

Methods

connect(): Promise

Connects to the chat server.

joinRoom(roomId: string): void

Joins a specific chat room.

sendMessage(roomId: string, content: string): void

Sends a message to a specific room.

disconnect(): void

Disconnects from the chat server.

Error Handling

The SDK includes automatic reconnection logic with exponential backoff. It will attempt to reconnect up to 5 times when the connection is lost.

TypeScript Support

The SDK is written in TypeScript and includes type definitions for all interfaces and methods.

Security Considerations

  1. Always use HTTPS in production
  2. Never expose JWT tokens in client-side code
  3. Implement proper token refresh mechanisms
  4. Set appropriate WebSocket timeouts
  5. Implement rate limiting on the server side

Browser Support

The SDK supports all modern browsers that implement the WebSocket API:

  • Chrome 6+
  • Firefox 6+
  • Safari 7+
  • Edge 12+
  • Opera 12.1+
1.0.0

10 months ago