duelfi_admin/Chat-admin-readme.md
2025-06-08 22:04:00 +05:30

2.8 KiB

Duelfi Chat Server

A real-time chat server built with Socket.IO and Express, supporting message creation, editing, and deletion.

Server Configuration

Message Structure

interface ChatMessage {
  id: string;        // Unique message identifier
  user: string;      // User identifier (DID format)
  message: string;   // Message content
  timestamp: number; // Unix timestamp
}

Socket Events

Client to Server

  1. chat message

    • Purpose: Send a new message
    • Payload: ChatMessage object
    • Response: Broadcasts to all clients
  2. edit message

    • Purpose: Edit an existing message
    • Payload: { messageId: string, newMessage: string }
    • Response: Broadcasts 'message edited' on success
  3. delete message

    • Purpose: Delete a message
    • Payload: messageId: string
    • Response: Broadcasts 'message deleted' on success

Server to Client

  1. recent messages

    • Purpose: Initial message history
    • Payload: ChatMessage[]
    • Trigger: On connection
  2. chat message

    • Purpose: New message notification
    • Payload: ChatMessage object
    • Trigger: When any client sends a message
  3. message edited

    • Purpose: Message edit notification
    • Payload: { messageId: string, newMessage: string }
    • Trigger: When a message is successfully edited
  4. message deleted

    • Purpose: Message deletion notification
    • Payload: messageId: string
    • Trigger: When a message is successfully deleted

Message Storage

  • Messages are stored in chat_history.json
  • Maximum of 100 messages are kept in memory
  • File storage maintains message history
  • All operations (create/edit/delete) are persisted to file

Error Handling

  • File operations are wrapped in try-catch blocks
  • Failed operations return false
  • Successful operations return true
  • All errors are logged to console

Usage Example

// Connect to server
const socket = io('http://localhost:3040');

// Send message
socket.emit('chat message', {
  id: Date.now().toString(),
  user: 'did:privy:user123',
  message: 'Hello world',
  timestamp: Date.now()
});

// Edit message
socket.emit('edit message', {
  messageId: 'message-id-here',
  newMessage: 'Updated message'
});

// Delete message
socket.emit('delete message', 'message-id-here');

// Listen for events
socket.on('recent messages', (messages) => {
  // Handle initial messages
});

socket.on('chat message', (message) => {
  // Handle new message
});

socket.on('message edited', ({ messageId, newMessage }) => {
  // Handle edited message
});

socket.on('message deleted', (messageId) => {
  // Handle deleted message
});