событие simple-peer on. (signal) повторяется много раз

Я использую simple-peer для создания небольшого приложения для видеозвонков с использованием NodeJS, SocketIO и Angular

Я пытаюсь реализовать здесь full-mesh. У меня есть одноранговый узел initialtor, который будет инициировать сигнал в цикле.

Мой код такой, как показано ниже.

const peer = new SimplePeer({
    initiator: true,
    trickle: false,
    stream,
});

peer.on("signal", signal => {
    console.log(userToSignal, "signal-callerID");
    this.peerService.emit("sending signal", { userToSignal, callerID, signal })
})

Эта функция будет в цикле. когда новый пользователь подключается, он отправляет сигнал этому пользователю. Моя проблема в том, что peer.on("signal", signal => событие повторяется, даже если подключен только 1 пользователь, что делает 11 запросов на создание 1 однорангового узла. в чем проблема и как я могу ее исправить?

Я ссылаюсь на этот код и пытаюсь реализовать его в angular .


person rakcode    schedule 17.07.2020    source источник
comment
Столкнувшись с точно такой же проблемой. Вы нашли решение?   -  person Rohan    schedule 28.09.2020


Ответы (3)


Это нормальное поведение, предложение и ледяные кандидаты. Если вы хотите только одно сообщение, установите для параметра trickle значение false, как описано здесь. Обратите внимание, что это приведет к дополнительной задержке при установлении соединения.

person Philipp Hancke    schedule 18.07.2020
comment
Привет. trickle уже ложен как в инициаторе, так и в другом. я использовал только тот же код. - person rakcode; 18.07.2020
comment
так. как мне это исправить. даже если у меня trickle отключено, signal событие повторяется несколько раз. - person rakcode; 19.07.2020
comment
Первый шаг - сбросить данные, которые он излучает. Если он включает кандидатов, то trickle: false не работает. - person Philipp Hancke; 19.07.2020
comment
привет, у меня такая же проблема .. ты выяснил причину / решение? - person Amogh Hegde; 25.08.2020

У меня такая же проблема. Просто попробуйте с простой одноранговой библиотекой версии 9.6.2. Оно работает!!!!!

person Pavitha    schedule 03.09.2020

Добавьте это к своему клиенту. Я сделал приложение Express webRTC и обнаружил, что слишком много пиров добавляют моим клиентам массив отзывчивых пиров. Так что найдите этот код в вопросах. Кстати, попробуйте это.

socketRef.current.on("user joined", payload => {
        const item = peersRef.current.find(p => p.peerID === payload.callerID);
        if(!item) {
          const peer = addPeer(payload.signal, payload.callerID, stream);
          peersRef.current.push({
            peerID: payload.callerID,
            peer,
          })
          peers.push(peer);
        }
});

У меня это сработало. После отставки одноранговые узлы не будут добавлять ur массив, и вы получите ur видеопоток от другого однорангового узла.

person Михаил    schedule 26.10.2020