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