laravel 如何在在线状态通道中触发“加入”?

8ehkhllq  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(102)

我尝试使用一个在线状态通道来查看用户的来来往往。出于这个目的,正如文档所建议的那样,我编写了以下代码。我收到了这个。

但是我怎么才能获得'加入'用户的console.log呢?如果我以另一个用户的身份登录,我只会得到一个用户凭证。我想它应该是一个数组...那么我该怎么做才能触发'加入'功能呢?

Echo.join('chat')
   .here((users) => {
       console.log('hello',users)
       this.users = users;
   })
   .joining((user) => {
       console.log('hey you', user)
       this.users.push(user);
   })
   .leaving((user) => {
       this.users.splice(this.users.indexOf(user), 1);
   })
gwo2fgha

gwo2fgha1#

据我所知,.joining()默认情况下每次触发一次。每当有新用户加入频道时,此函数都会捕获用户并向频道发送相关事件。对吗?
当你刷新页面时,频道也会重新加载,触发.leaving()和.joining()--你“离开”了页面,又“返回”了页面。
如果您是重新加载页面的用户,您将不会收到“hey you...”,因为您是触发事件的用户。将收到它的是那些连接到通道的用户。
当您重新加入通道时,在刷新之后,.here()将被触发...
请记住:如果“Echo.join()”在您刷新的页面中,您将暂时与通道断开连接,因此您将无法接收通道发送的消息。

例如:

我们(你和我)连接到同一个频道,我刷新页面。我将暂时断开与该频道的连接,该频道将向仍连接到它的用户(在本例中为您)广播.joining()中的内容。
如果你刷新页面也是如此。当我收到消息时,你将被断开连接。
所以,如果你想接收.joining()广播的消息,请确保你不是刷新页面的用户。

相关问题