server.on('connection', (socket) => {
socket.on('openDocument', ({ docId }) => {
socket.join(`doc:${docId}`);
// Notify others
socket.broadcastToRoom(`doc:${docId}`, 'userJoined', {
userId: socket.id,
timestamp: Date.now()
});
});
socket.on('edit', ({ docId, changes }) => {
// Broadcast changes to all users viewing this document
socket.broadcastToRoom(`doc:${docId}`, 'documentChanged', {
userId: socket.id,
changes,
timestamp: Date.now()
});
});
socket.on('cursor', ({ docId, position }) => {
// Broadcast cursor position to other viewers
socket.broadcastToRoom(`doc:${docId}`, 'cursorMoved', {
userId: socket.id,
position
});
});
socket.on('closeDocument', ({ docId }) => {
socket.leave(`doc:${docId}`);
socket.broadcastToRoom(`doc:${docId}`, 'userLeft', {
userId: socket.id
});
});
});