chat persist
This commit is contained in:
parent
0b2667bcd4
commit
8cbab9894c
50
chatHistory.ts
Normal file
50
chatHistory.ts
Normal 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 [];
|
||||
}
|
||||
13
index.ts
13
index.ts
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user