Как изменить RoomID, чтобы позволить другому пиру присоединиться к моей комнате - WebRTC, Socket.Io - PullRequest
0 голосов
/ 28 сентября 2018

Я кодирую видеочат, используя WebRtc и Socket.io для соединения.Чтобы начать вызов, вам нужно создать комнату, сервер получает идентификатор комнаты, создает комнату и позволяет вам присоединиться.Теперь я хочу отправить в широковещательную рассылку сообщение, чтобы другие клиенты знали, что комната была создана и что они могут присоединиться, нажав кнопку.

Вот код для создания комнаты:

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

Как видите, у меня есть проверка количества клиентов в комнатепоэтому, если вы попытаетесь создать комнату, которая уже была создана, вы присоединитесь к ней.

Обычно, когда я создаю комнату, я хочу отправить широковещательное сообщение другим подключенным клиентам,отправив им номер тоже, поэтому первым из них, который нажимает кнопку «JoinRoom», он эффективно присоединяется.

Я попытался добавить «.broadcast».на стороне сервера ( socket.broadcast.emit ('созданный', комната, socket.id); ), но это не работает для меня, и если это работает, я не знаю, каксохранить переменную комнаты на стороне клиента.Моя кнопка joinRoom выглядит так:

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

Спасибо за помощь

...