2.3.4.1 Signaling Server

Socket.io is used to exchange ICE candidates, session descriptions, and other metadata required for WebRTC connections

// backend/src/socket/webrtcSocket.js
module.exports = (io) => {
  io.on('connection', (socket) => {
    // Listen for offer
    socket.on('offer', (payload) => {
      // payload: { toUserId, sdp }
      io.to(payload.toUserId).emit('offer', {
        fromUserId: socket.id,
        sdp: payload.sdp
      });
    });

    // Listen for answer
    socket.on('answer', (payload) => {
      io.to(payload.toUserId).emit('answer', {
        fromUserId: socket.id,
        sdp: payload.sdp
      });
    });

    // ICE candidates
    socket.on('iceCandidate', (payload) => {
      io.to(payload.toUserId).emit('iceCandidate', {
        fromUserId: socket.id,
        candidate: payload.candidate
      });
    });
  });
};

Last updated