Как отправлять данные между вызывающим и получателем в PeerJS?

Я создаю приложение для аудиовызовов, и я изо всех сил пытаюсь отправить данные между получателем вызова вызывающему абоненту. Вот мой код (в приемнике вызовов):

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
peer.on('call', function(call) {

   console.log("call.peer: " + call.peer)
   conn = peer.connect(call.peer)

   bootbox.dialog({
     className: "modal-danger nonumpad",
     closeButton: false,
     animate: true,
     title: 'Call Recieved',
     message: "Accept or Decline",
     onEscape: null,
     buttons: {
       pickup: {
         label: "<i class=\"fa fa-phone\"></i> Answer",
         className: "btn-warning btn-lg pull-left",
         callback: function(){
           conn.send('ACCEPT') // send Accept to the caller
           return false
         }      
      },
      hangup: {
        label: "<i class=\"fa fa-phone\"></i> Decline",
        className: "btn-warning btn-lg pull-left",
        callback: function(){
          conn.send('DECLINED') // Send Decline to the caller
          return false;
        }
      }
    }
  });
});

С приведенным выше кодом, когда я делаю вызов, появляется диалоговое окно, и когда я нажимаю один из вариантов, данные должны быть отправлены вызывающему абоненту.

Вот код вызывающего абонента, который получает отправленные выше данные:

peer.on('open', function () {
  Meteor.users.update(Meteor.userId(), { $set: { 'profile.peerId': peer.id } })
  console.log(Meteor.user().profile.peerId);
  peer.on('connection', function(conn) {
    conn.on('data', function(data){
      console.log(data);
    });
  });
});

На консоль ничего не выводится.

Что я здесь делаю неправильно?


person sourceplaze    schedule 02.03.2018    source источник


Ответы (1)


Событие соединения не имеет значения. Вы хотите прослушать событие call вот так

    peer.on('call', function (incomingCall) {

Надеюсь, это сработает лучше для вас.

Я бы не стал обновлять запись пользователя с помощью peerId, Meteor не рекомендует его использовать, так как система аутентификации также пишет в него. Я успешно использовал dburles:presence и фактически передал идентификатор присутствия для использования peerjs (вместо того, чтобы позволить peerjs выделить его)

person Mikkel    schedule 05.03.2018