如何强制重新加载页面以使POST请求通过

时间:2019-09-26 11:44:33

标签: laravel vue.js

在检查用户是否能够加入presentChannel之后,我希望数据$ user显示在我的页面上。我点击刷新后就会显示出来。我的问题是如何强制重新加载页面而无需手动上传(使POST请求通过)?

Broadcast::channel('online', function ($user) {
  if(auth()->check())
     return $user;
});

组件

<tbody>
       <tr v-for="user in users" :key="user.id"> 
            <td>{{user.name}}</td>
            <td>{{user.ip}}</td>
        </tr> 
</tbody>

export default { 
     data() {
        return {
            users:[],            
      }    
   },   

    mounted() {
           window.Echo.join('online')
            .here(users => (this.users = users))       
    }, 
}

1 个答案:

答案 0 :(得分:1)

感谢您发布代码。看来我们可以排除我在上面的评论中提到的PHP角度。我认为问题在于您没有在听新用户。

#加入在线渠道
https://laravel.com/docs/5.8/broadcasting#joining-presence-channels

  

此处回调将在频道成功加入后立即执行,并将接收一个包含当前订阅频道的所有其他用户的用户信息的数组。

对我来说,这表明here方法仅在您的应用程序加入频道时才触发一次。为了接收新用户,您将需要订阅其他事件,并按收到的请求将新用户推送到用户数组(或从中删除用户)。

window.Echo.join('online')
    .here((users) => {
        // loads the initial data
        this.users = users;
    })
    .joining((user) => {
        // push a newly joining user to the users array
        // ...
    })
    .leaving((user) => {
        // delete a user who is leaving from the users array
        // ...
    });

我没有为其他方法编写任何特定的代码,因为您可能希望以特定的方式对用户进行排序,但是我认为您应该明白这一点。