首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Echo存在通道在vue路由器上不能正常工作

Laravel Echo存在通道在vue路由器上不能正常工作
EN

Stack Overflow用户
提问于 2018-12-09 14:33:21
回答 1查看 1.6K关注 0票数 1

这个应用程序是一个聊天应用,使用laravel和Vue,一旦用户登录他看到所有在线用户的列表,我在主页的挂载组件中调用Echo包装器来显示所有在线用户,它工作并显示他们,现在的问题是,如果我转到另一个页面(通过Vue路由器),然后返回到主页,它不会显示在线用户的列表.除了手动我再次刷新页面。下面是我的代码片段:

代码语言:javascript
复制
mounted () {
// alert('Shoud work')
// console.log(Echo)
Echo.join('online')
.here((users) => {
  alert(JSON.stringify(users))
    this.users = users
})
.joining((user) => {
    this.users.push(user)
})
 .leaving((user) => {
    this.users = this.users.filter(u => (u.id !== user.id));
    })
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-11 02:50:28

尝试使用组件destroyed方法离开通道。因为您从未离开过通道,因此一旦返回,问题可能是Echo.join不会再次加载,因为用户已经在通道上了,因此不会触发负责用聊天用户数组加载组件users属性的.here

代码语言:javascript
复制
mounted () {
    Echo.join('online')
    .here(users => {
        this.users = users
    })
    .joining(user => {
        this.users.push(user)
    })
    .leaving(user => {
        this.users = this.users.filter(u => (u.id !== user.id));
    })
},
destroyed() {
    Echo.leave(user => {
        this.users = this.users.filter(u => (u.id !== user.id));
    });
}

代码语言:javascript
复制
mounted () {
    Echo.join('online')
    .here(users => {
        this.users = users
    })
    .joining(user => {
        this.users.push(user)
    })
    .leaving(user => {
        this.removeUser()
    })
},
destroyed() {
    Echo.leave(user => {
        this.removeUser()
    });
},
methods: {
    removeUser(user) {
        this.users = this.users.filter(u => (u.id !== user.id))
        // Any other reusable code...
    }
}

更新:

如果您打算让用户在应用程序中“登录”,一种方法就是创建一个“会话”组件。这个组件可以或者不能有一个模板,但是,它需要在每个页面上保持加载。若要访问此会话组件之外的用户列表,可以将用户数据存储到浏览器的本地存储区,使用全局变量(ex )。( window.session.users),或者,如果可用,可以使用Vuex。无论哪种方式,只要用户数组可供其他组件使用,会话组件将在用户离开或加入应用程序(或聊天.或者您在那里实现的任何联接/离开规则)。

例如,假设您创建了一个名为session的组件。您可以使用<session></session>轻松地将其放在顶部导航组件模板中。由于会话组件自己的模板是空的,它不会影响顶部导航。但是,它将被呈现,允许您管理用户的联机状态。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53693368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档