Попробуйте выйти из канала, используя компонент destroyed
.Поскольку вы никогда не покидали канал, после возвращения может возникнуть проблема, связанная с тем, что Echo.join
не будет загружаться снова, поскольку пользователь уже находится на канале, поэтому не запускает .here
, который отвечает за загрузку.Ваши компоненты users
свойство с массивом пользователей чата.
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));
});
}
Или
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...
}
}
ОБНОВЛЕНИЕ:
Если вы намереваетесь оставить пользователя "авторизованным"через ваше приложение, один из способов сделать это - создать компонент «сеанс».Этот компонент может иметь или не иметь шаблон, однако он должен оставаться загруженным на каждой странице.Чтобы получить доступ к списку пользователей за пределами этого компонента сеанса, вы можете либо сохранить данные пользователей в локальном хранилище браузера, использовать глобальную переменную (например, window.session.users), либо, если доступно, использовать Vuex.В любом случае, пока массив пользователей доступен для использования другими компонентами, компонент сеанса будет поддерживать эту информацию в актуальном состоянии, когда пользователи выходят из приложения или присоединяются к нему (или к чату ... или к любому другому правилу присоединения / выхода, которое вы реализуете там)..
Например, допустим, вы создали компонент с именем session
.Вы можете легко поместить его в шаблон верхнего компонента навигации, используя <session></session>
.Поскольку собственный шаблон компонента сеанса пуст, это не повлияет на верхнюю навигацию.Однако он будет обработан, что позволит вам управлять состоянием пользователя в сети.