2.8 KiB
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
- Port: 3040
- CORS Origins:
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
-
chat message
- Purpose: Send a new message
- Payload:
ChatMessageobject - Response: Broadcasts to all clients
-
edit message
- Purpose: Edit an existing message
- Payload:
{ messageId: string, newMessage: string } - Response: Broadcasts 'message edited' on success
-
delete message
- Purpose: Delete a message
- Payload:
messageId: string - Response: Broadcasts 'message deleted' on success
Server to Client
-
recent messages
- Purpose: Initial message history
- Payload:
ChatMessage[] - Trigger: On connection
-
chat message
- Purpose: New message notification
- Payload:
ChatMessageobject - Trigger: When any client sends a message
-
message edited
- Purpose: Message edit notification
- Payload:
{ messageId: string, newMessage: string } - Trigger: When a message is successfully edited
-
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
});