AURA-Backend / socket.service.js
Vijayadhith7's picture
Upload 4 files
966e320 verified
const aiService = require('./ai.service');
const memoryService = require('./memory.service');
class SocketService {
init(io) {
io.on('connection', (socket) => {
console.log('User connected:', socket.id);
const sessionId = socket.id;
socket.on('message', async (data) => {
const { text, chatId, modelType = 'aura' } = data;
const sessionId = chatId || socket.id;
console.log(`📩 Received message for session: ${sessionId}`);
try {
// 1. Get History
const history = await memoryService.getHistory(sessionId);
// 2. Stream Response
let fullResponse = "";
await aiService.getStreamingResponse(text, history, (data) => {
// data is now { type: 'chunk'|'thought'|'tool'|'output', content: '...' }
socket.emit('chunk', data);
if (data.type === 'chunk') {
fullResponse += data.content;
}
}, modelType);
// 3. Update Memory
await memoryService.addMessage(sessionId, 'user', text);
await memoryService.addMessage(sessionId, 'model', fullResponse);
socket.emit('done', { text: fullResponse });
} catch (error) {
console.error('💥 Socket Service Error:', error);
socket.emit('chunk', { type: 'chunk', content: "⚠️ *AURA is currently experiencing a connection blackout. Please ensure your backend is running and API keys are valid.*" });
}
});
socket.on('disconnect', () => {
console.log('User disconnected');
// Optional: clear memory after disconnect or keep for a while
});
});
}
}
module.exports = new SocketService();