【问题标题】:Pusher: Cannot broadcast client eventPusher:无法广播客户端事件
【发布时间】:2016-04-23 14:28:58
【问题描述】:


我正在使用 laravel 5 开发一个会议应用程序,我决定为此实现一个 webRTC 解决方案。
所以,我使用 Pusher 来发送信号,但我有一个问题:我正在使用 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?')
        });

有什么想法吗? 谢谢。

【问题讨论】:

    标签: javascript laravel-5 webrtc pusher


    【解决方案1】:

    问题是 Pusher 客户端在触发 peer.on('signal') 之前没有机会连接和订阅频道。您是否尝试将 peers 的东西移到订阅回调中?

    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?')
      });
    });
    

    【讨论】:

    • 想答案,我按照你的建议去做,现在出现这个错误:Pusher : Error : {"type":"WebSocketError","error":{"type":"PusherError","data":{"code":4301,"message":"Rejected client event because of rate limiting. See the docs: pusher.com/docs/client_api_guide/client_events#trigger-events"}}}
    猜你喜欢
    • 2017-12-21
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2017-05-03
    • 1970-01-01
    • 2019-09-14
    相关资源
    最近更新 更多