2017-09-14 36 views
0

ユーザーが1対1の会話やグループの会話を作成できるチャットを作成しようとしています。私はLaravel 5.5とVue.jsを使用しています。私はワイルドカードでのチャットに参加するためにドキュメントから読み取ることは可能であるから、Laravelエコーとブロードキャストを使用してダイナミックチャンネルを作成する

Echo.join('chat.'{roomId}) 
     //.here() 
     //.joining() 
     //.leaving() 
     .listen('MessagePosted', (e) => { 
      //Some action 
     }); 
}); 

routes/channels.phpに私は

Broadcast::channel('chat.{roomId}', function ($user, $roomId) { 
    //some form of authentication 
}); 

しかし、ここで私はエコー機能を配置する必要がありますを使用する必要があります?

私は

const app = new Vue({ 
el: '#app', 
data: { 
    //Some arrays 
}, 
methods: { 
    //some methods 
}, 
created() { 
    //some axios functions to happen when it is created 

    Echo.join('chatroom') 
     //.here() 
     //.joining() 
     //.leaving() 
     .listen('MessagePosted', (e) => { 
      console.log(e); 
      this.messages.push({ 
       message: e.message.message, 
       user: e.user 
      }); 
     }); 

} 

})とVueのアプリを作成しています。

ご覧のとおり、#appで作成されたすべてのインスタンスが参加する一般的なチャンネルを作成しました。しかし、私はそれを変更して特定のチャンネルに参加したいと思っています。

答えて

1

私は思ったより簡単です。

チャンネルを変更するときはいつでも、たとえば別のウィンドウチャットなど、呼び出されるメソッドが作成されました。ベストプラクティスは、常にそれを呼び出すために、それならば方法

showThread(thread) { 
    Echo.leave(/*The last channel*/); 
    Echo.join(/*New room*/) 
     .listen('MessagePosted', (e) =>{/*actions*/} 

わからない内部の機能を置きますが、それは動作します。誰かがこれを見つけて、質問や提案があったら、私はそれを喜んで聞いています。

関連する問題