2017-06-06 20 views
1

私のシナリオLaravel放送

イムlaravelエコーを使用せずに、プッシャーで動作するようにlaravelを取得しようと、すべてが公共チャネル上で動作しますが、私は私のイベントのbroadcastOn()方法でプライベートチャンネルに切り替えたときフロントエンドのプッシャーはもう何も選択しません。私のプッシャーアプリケーションのイベントログにプライベートチャンネルとして記録されますが、フロントエンドではプッシュしません。

私がセットアップされ、このようなチャネルコードのためにtrueを返しました:

Broadcast::channel('application', function ($post, $username) { 
    if(true){ 
     return true; 
    } 
}); 

は、これは私のイベントコードです:

public function broadcastOn() 
{ 
    return new PrivateChannel('application'); 
} 

クラスはShouldBroadcastを実装し、最後にここに私のフロントエンドでありますコード:

<script> 
    //instantiate a Pusher object with our Credential's key 
    var pusher = new Pusher('MY_KEY', { 
     cluster: 'en', 
     encrypted: true 
    }); 

    //Subscribe to the channel we specified in our Laravel Event 
    var channel = pusher.subscribe('application'); 

    //Bind a function to a Event (the full Laravel class) 
    channel.bind('App\\Events\\PostMessage', function(){ 
     console.log('Event Logged'); 
    }); 
</script> 

私の質問

私のプッシャーフロントエンドコードが私のプライベートブロードキャストを検出しないのはなぜですか?

答えて

1

ふふふ、私はそれを見つけたと思う: https://pusher.com/docs/client_api_guide/client_private_channels

あなたは'private-'とチャンネル名の前に付ける必要があります。エコーがあなたのために自動的に行うことの一つ!

参考として残りは以下のとおりです。最後のアドバイスは静止し、少なくともLaravelにEchoせずにこの問題;-)


あなたはプッシャーを使用するときにチェックしたいいくつかのことをデバッグであなたを助けただろう:

  • クラスタが正しく設定されていることを確認してください。私はちょうど自分の ダッシュボードをチェックし、mt1をクラスタとして持っていました。デフォルトでは が廃止されている可能性があります。

  • エコーが外から多くのものを行うように設定されています。それらのうちの1つは で、覚えやすい文字列を完全な名前に変換して、プッシャーと通信するときに の相手にペーストします。したがって、 Echoをスキップする場合は、この動作を1対1でエミュレートするか、 以外の場合はエコーを破棄します。その最後のノートで

、それはあなたがこのような何かをする必要があることが考えられます。

var channel = pusher.subscribe('App/Events/application'); 
  • は を作るいくつかのコードを追加するだけでなく1のドキュメント1をコピーしてみてくださいチャンネルは一意です。私は内部を知りませんが、それは PrivateChannelがユニークなパラメータを必要とし、なし を機能していないことが考えられます:あなたのチャンネルのための

    public function broadcastOn() 
    { 
        return new PrivateChannel('order.'.$this->update->order_id); 
    } 
    

    そして、このよう

Broadcast::channel('order.{orderId}', function ($user, $orderId) { 
    return $user->id === Order::findOrNew($orderId)->user_id; 
}); 

最初にEchoを使用して、ドキュメントに従ったすべてを実行してください。これは、便利なレイヤーを提供します。それからそこから壊してください。少なくともあなたはあなたのすべての基本を持っており、あなたのアプリとPusherとの間のコミュニケーションがうまくいっていることを知っています! :-)

これは私が実際に自分で実際にコーディングすることなく考えることができるすべてです!それらの1つがあなたのために働くことを願っています。

+0

これはありがたいですね、もう一度リメイクしてください(アプリケーションを削除してエコーを試してみることにしました)。私がエコーを使わないことを望む唯一の理由は、javascriptコードの各部分を非常によく置く場所を文書化していないからです。私は別のサイトに行き、コードを調べることで見つけ出すことができました。主な理由は、それ自体でvueコンポーネント/ javascriptに慣れていないimです。しかし、これはもう一度病気をテストして、あなたに戻ってくれてありがとう! –

+0

もう一度見て、いくつかの追加の変更を加えて、私はそれを働かせることができました!これは本当に助けてくれてありがとう。巨大な学習曲線 –

+0

あなたは歓迎よりもよ!幸運の最高: –