File size: 1,885 Bytes
77610ec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.initSocket = void 0;
const socket_io_1 = require("socket.io");
const initSocket = (server) => {
    const io = new socket_io_1.Server(server, {
        cors: {
            origin: process.env.CLIENT_URL
                ? process.env.CLIENT_URL.split(",")
                : ["http://localhost:3002"],
            methods: ["GET", "POST"],
            credentials: true,
        },
    });
    io.on("connection", (socket) => {
        console.log("A user connected:", socket.id);
        // Join a collaboration room for a specific project
        socket.on("join-project", (projectId) => {
            socket.join(`project:${projectId}`);
            console.log(`User ${socket.id} joined project ${projectId}`);
        });
        // Leave project room
        socket.on("leave-project", (projectId) => {
            socket.leave(`project:${projectId}`);
            console.log(`User ${socket.id} left project ${projectId}`);
        });
        // Handle code changes (if not using Yjs directly via y-websocket server)
        socket.on("code-change", (data) => {
            socket.to(`project:${data.projectId}`).emit("code-update", data.change);
        });
        // Real-time cursor/presence
        socket.on("cursor-move", (data) => {
            socket.to(`data.projectId`).emit("cursor-update", {
                userId: socket.id,
                ...data,
            });
        });
        // Video Chat Signaling
        socket.on("video-signal", (data) => {
            io.to(data.target).emit("video-signal", {
                sender: socket.id,
                signal: data.signal,
            });
        });
        socket.on("disconnect", () => {
            console.log("User disconnected:", socket.id);
        });
    });
    return io;
};
exports.initSocket = initSocket;