Я создаю приложение поддержки чата. Он построен на Laravel Echo через Pusher.js.
Есть две стороны - поддержка / администратор и клиент. Когда клиент запускает чат, служба поддержки может принять его, и они могут общаться вместе. Работает так, как должно быть, но есть одна вещь. Когда клиент переходит в автономный режим (закрывает браузер, покидает сайт, теряет интернет-соединение ...), ему нужно подождать несколько секунд (чтобы убедиться, что это не было ошибкой), а затем закрыть чат. Поэтому, когда он вернется через час, активного чата не будет.
Я проверяю онлайн-статус обеих сторон с помощью канала присутствия с простым кодом:
this.presence = Echo.join('chat');
this.presence
.listen('.pusher:subscription_error', (result) => {
if(this.debug) {
console.log(result);
}
})
.listen('.pusher:member_added', (result) => {
if(!!result.info.is_admin) {
this.presence_users.push(result.info);
}
})
.listen('.pusher:member_removed', (result) => {
let found = _.find(this.presence_users, ['id', result.id]);
let index = this.presence_users.indexOf(found);
this.presence_users.splice(index, 1);
})
.here((result) => {
this.presence_users = _.filter(result, ['is_admin', true]);
});
Вкл. поддержка немного отличается, но все та же логика (также не беспокойтесь - пользователь id
не id
из базы данных, а уникальный идентификатор md5).
Присутствие канала работает хорошо. Но я нигде не могу найти в интернете, как настроить connection_timeout
URL? Я просто думаю, что это может быть URL, где Pusher.js будет публиковать некоторые данные, когда пользователь отключается или соединение теряется - например, мое настраиваемое поле id
. Как я отметил в начале, у него должно быть некоторое время восстановления, когда пользователь по ошибке отключается от сети. Это поможет закрыть чат, когда пользователь не сможет ответить.
Есть ли у вас какие-либо проблемы с подобной проблемой? Если да, то как ты решил это? Или - возможно ли это решить с помощью Pusher.js?