我正在构建一个支持聊天应用程序。它通过 Pusher.js 在 Laravel Echo 上构建。
有两个方面 - 支持/管理员和客户端。当客户开始聊天时,支持人员可以接受它并且他们可以一起聊天。它按应有的方式工作,但有一件事。当客户端离线(关闭浏览器、离开网站、失去互联网连接......)它应该等待大约几秒钟(以确保它不是错误)然后关闭聊天。因此,当他大约一个小时后回来时,不会有任何活跃的聊天。
我正在使用简单的代码通过在线状态通道检查双方的在线状态:
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
不是来自数据库,而是唯一的 md5 标识符)。 id
存在通道运行良好。但是我在互联网上找不到任何地方,如何设置connection_timeout
URL?我只是认为它可能是 URL,当用户离线或连接丢失时,Pusher.js 将在其中发布一些数据 -id
例如我的自定义字段。正如我在开始时指出的那样,当用户错误地离线时,它应该有一些“冷却时间”。当用户无法回复时,这将有助于关闭聊天。
你有遇到类似问题的经验吗?如果是这样,您是如何解决的?或者 - 甚至可以用 Pusher.js 解决它吗?