如何使用RoomID让其他同伴加入我的房间-WebRTC,Socket.Io

时间:2018-09-28 10:45:34

标签: sockets server client webrtc broadcast

我正在使用WebRtc和Socket.io进行视频聊天编码。 要开始呼叫,您必须创建一个会议室,服务器会收到会议室ID,创建会议室并让您加入。现在,我想发送广播消息,让其他客户知道已经创建了一个房间,他们可以通过按按钮加入。

这是创建房间的代码:

1。

//client side
function createRoom(){
  var room = window.location.hash = randomToken();
  socket.emit('create or join', room);
}

2。

//server side
socket.on('create or join', function(room) {
    log('Received request to create or join room ' + room);

    var clientsInRoom = io.sockets.adapter.rooms[room];
    var numClients = clientsInRoom ? Object.keys(clientsInRoom.sockets).length : 0;
    log('Room ' + room + ' now has ' + (numClients + 1) + ' client(s)');

    if (numClients === 0) {
      socket.join(room);
      log('Client ID ' + socket.id + ' created room ' + room);
      socket.emit('created', room, socket.id);
    } else if (numClients === 1) {
      log('Client ID ' + socket.id + ' joined room ' + room);
      // io.sockets.in(room).emit('join', room);
      socket.join(room);
      socket.emit('joined', room, socket.id);
      io.sockets.in(room).emit('ready', room);
      socket.broadcast.emit('ready', room);
    } else { // max two clients
      socket.emit('full', room);
    }
  });

3。

//client side again
socket.on('created', function(room, clientId) {
  console.log('Created room', room, '- my client ID is', clientId);
  isInitiator = true;
  socket.emit('readyToJoin', room);
  grabWebCamVideo();
});

如您所见,我已经检查了会议室中的客户数量,因此,如果您尝试创建一个已经创建的会议室,您将加入该会议室。

基本上,当我创建一个会议室时,我想向连接的其他客户端发送广播消息,也向他们发送roomId,因此他们中的第一个按下“ JoinRoom”按钮的用户就有效地加入了。

我尝试添加“ .broadcast”。在服务器端( socket.broadcast.emit('created',room,socket.id); ),但是它对我不起作用,如果起作用,我不知道如何将房间变量保存在客户端。 我的joinRoom按钮如下所示:

function joinRoom(){
var roomId = room;
socket.emit('create or join', roomId);
}

感谢您的帮助

0 个答案:

没有答案