chat persist

This commit is contained in:
Sewmina 2025-06-01 06:04:43 +05:30
parent 0b2667bcd4
commit 8cbab9894c
2 changed files with 58 additions and 5 deletions

50
chatHistory.ts Normal file
View File

@ -0,0 +1,50 @@
import fs from 'fs';
import path from 'path';
const CHAT_HISTORY_FILE = path.join(__dirname, 'chat_history.json');
const MAX_MESSAGES = 100;
export interface ChatMessage {
id: string;
user: string;
message: string;
timestamp: number;
}
export function saveMessage(message: ChatMessage): void {
try {
let messages: ChatMessage[] = [];
// Read existing messages if file exists
if (fs.existsSync(CHAT_HISTORY_FILE)) {
const fileContent = fs.readFileSync(CHAT_HISTORY_FILE, 'utf-8');
messages = JSON.parse(fileContent);
}
// Add new message
messages.push(message);
// Keep only the last MAX_MESSAGES
if (messages.length > MAX_MESSAGES) {
messages = messages.slice(-MAX_MESSAGES);
}
// Write back to file
fs.writeFileSync(CHAT_HISTORY_FILE, JSON.stringify(messages, null, 2));
} catch (error) {
console.error('Error saving chat message:', error);
}
}
export function loadRecentMessages(): ChatMessage[] {
try {
if (fs.existsSync(CHAT_HISTORY_FILE)) {
const fileContent = fs.readFileSync(CHAT_HISTORY_FILE, 'utf-8');
const messages: ChatMessage[] = JSON.parse(fileContent);
return messages.slice(-MAX_MESSAGES);
}
} catch (error) {
console.error('Error loading chat messages:', error);
}
return [];
}

View File

@ -2,6 +2,7 @@ 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());
@ -20,9 +21,8 @@ const io = new Server(httpServer, {
}
});
// Store recent messages in memory (you might want to use a database in production)
const recentMessages: any[] = [];
const MAX_MESSAGES = 100;
// Store recent messages in memory
const recentMessages: ChatMessage[] = loadRecentMessages();
io.on('connection', (socket: Socket) => {
console.log('User connected:', socket.id);
@ -30,10 +30,13 @@ io.on('connection', (socket: Socket) => {
// Send recent messages to newly connected users
socket.emit('recent messages', recentMessages);
socket.on('chat message', (message: any) => {
socket.on('chat message', (message: ChatMessage) => {
// Save message to file
saveMessage(message);
// Add message to recent messages
recentMessages.push(message);
if (recentMessages.length > MAX_MESSAGES) {
if (recentMessages.length > 100) {
recentMessages.shift();
}