Files
drone-detector/server/services/socketService.js
2025-08-16 19:43:44 +02:00

56 lines
1.6 KiB
JavaScript

function initializeSocketHandlers(io) {
io.on('connection', (socket) => {
console.log(`Client connected: ${socket.id}`);
// Join device-specific rooms for targeted updates
socket.on('join_device_room', (deviceId) => {
socket.join(`device_${deviceId}`);
console.log(`Client ${socket.id} joined device room: device_${deviceId}`);
});
// Join dashboard room for general updates
socket.on('join_dashboard', () => {
socket.join('dashboard');
console.log(`Client ${socket.id} joined dashboard room`);
});
// Leave rooms
socket.on('leave_device_room', (deviceId) => {
socket.leave(`device_${deviceId}`);
console.log(`Client ${socket.id} left device room: device_${deviceId}`);
});
socket.on('leave_dashboard', () => {
socket.leave('dashboard');
console.log(`Client ${socket.id} left dashboard room`);
});
// Handle client disconnect
socket.on('disconnect', () => {
console.log(`Client disconnected: ${socket.id}`);
});
// Send current status on connect
socket.emit('connection_status', {
status: 'connected',
timestamp: new Date().toISOString(),
clientId: socket.id
});
});
// Helper functions to emit events to specific rooms
io.emitToDevice = function(deviceId, event, data) {
io.to(`device_${deviceId}`).emit(event, data);
};
io.emitToDashboard = function(event, data) {
io.to('dashboard').emit(event, data);
};
console.log('Socket.IO handlers initialized');
}
module.exports = {
initializeSocketHandlers
};