duelfi_socket_chat/index.ts
2025-06-01 06:04:43 +05:30

55 lines
1.4 KiB
TypeScript

import { Server, Socket } from 'socket.io';
import { createServer } from 'http';
import express from 'express';
import cors from 'cors';
import { ChatMessage, saveMessage, loadRecentMessages } from './chatHistory';
const app = express();
app.use(cors());
const httpServer = createServer(app);
const io = new Server(httpServer, {
cors: {
origin: [
"http://localhost:3000",
"http://localhost:3030",
"http://localhost:3031",
"https://dev.duelfi.io",
"https://beta.duelfi.io"
],
methods: ["GET", "POST"]
}
});
// Store recent messages in memory
const recentMessages: ChatMessage[] = loadRecentMessages();
io.on('connection', (socket: Socket) => {
console.log('User connected:', socket.id);
// Send recent messages to newly connected users
socket.emit('recent messages', recentMessages);
socket.on('chat message', (message: ChatMessage) => {
// Save message to file
saveMessage(message);
// Add message to recent messages
recentMessages.push(message);
if (recentMessages.length > 100) {
recentMessages.shift();
}
// Broadcast message to all connected clients
io.emit('chat message', message);
});
socket.on('disconnect', () => {
console.log('User disconnected:', socket.id);
});
});
const PORT = 3040;
httpServer.listen(PORT, () => {
console.log(`Socket.IO server running on port ${PORT}`);
});