2016-04-23 35 views
2


我正在開發一個會議應用程序與laravel 5,我決定爲此實現一個webRTC解決方案。
所以,我用推信令的東西,但我有一個概率:我使用SimplePeerJs的東西的WebRTC,當我觸發事件(訂閱後,和其他的東西),我有以下錯誤:推送:無法播送客戶端事件

Pusher : Error : {"type":"WebSocketError","error":{"type":"PusherError","data":{"code":null,"message":"Cannot broadcast client event (connection not subscribed to channel presence-chat)"}}}. 

我的代碼是:

Pusher.log = function(message) { 
      if (window.console && window.console.log) 
      { 
       window.console.log(message); 
      } 
     }; 
     var currentUser = { 
      nom: '{{ auth()->user()->first_name }}', 
      id: {{ auth()->user()->id }}, 
      stream: undefined 
     }; 
     var pusher = new Pusher('my_app_key', { 
      authEndpoint: 'pusher/auth', 
      auth: { 
       headers: { 
        'X-CSRF-Token': '{{ csrf_token() }}' 
       }, 
       params: { 
        name: currentUser.name, 
        id: currentUser.id 
       } 
      } 
     }); 

     var channel = pusher.subscribe('presence-chat'); 

     var callback = function() { 
      console.log('Channel members:', channel.members); 
     }; 
     // 
     channel.bind('pusher:subscription_succeeded', callback); 
     channel.bind('pusher:subscription_error', function(PusherError){ 
      console.log(PusherError); 
     }); 
     channel.bind('pusher:member_added', function(){ 
      console.log('Member Added'); 
     }); 
     channel.bind('pusher:member_removed', function(){ 
      console.log('Member Removed'); 
     }); 
     //peers stuff 
     var peer = new SimplePeer({ initiator: true }); 

     peer.on('signal', function (data) { 
      channel.trigger('client-signal-' + currentUser.id, 
        { 
         userId: currentUser.id, 
         data: data 
        }); 
     }); 

     peer.on('ready', function() { 
      peer.send('hey peer, how is it going?') 
     }); 

什麼想法? 謝謝。

回答

0

問題在於,在觸發peer.on('signal')之前,Pusher客戶端沒有機會連接和訂閱該頻道。你有沒有嘗試將同行的東西移入訂閱回調?

var callback = function() { 
    console.log('Channel members:', channel.members); 

    //peers stuff 
    var peer = new SimplePeer({ initiator: true }); 

    peer.on('signal', function (data) { 
    channel.trigger('client-signal-' + currentUser.id, 
       { 
        userId: currentUser.id, 
        data: data 
       }); 
    }); 

    peer.on('ready', function() { 
    peer.send('hey peer, how is it going?') 
    }); 
}); 
+1

思的答案,我做什麼ü建議,這ERR現在出現: '推:錯誤:{ 「類型」: 「WebSocketError」, 「錯誤」:{ 「類型」: 「PusherError」 「data」:{「code」:4301,「message」:「由於速率限制而拒絕客戶端事件。請參閱文檔:pusher.com/docs/client_api_guide/client_events#trigger-events」}}}' –