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
});
});
});
};