Spaces:
Runtime error
Runtime error
| ; | |
| 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; | |