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

121 lines
2.8 KiB
Markdown

# Duelfi Chat Server
A real-time chat server built with Socket.IO and Express, supporting message creation, editing, and deletion.
## Server Configuration
- **Port**: 3040
- **CORS Origins**:
- http://localhost:3000
- http://localhost:3030
- http://localhost:3031
- https://dev.duelfi.io
- https://beta.duelfi.io
- https://duelfi.io
## Message Structure
```typescript
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
```typescript
// 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
});
```