2016-04-23 36 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”}}}' –