如何在 laravel Echo 中获取连接状态/其他事件
Posted
技术标签:
【中文标题】如何在 laravel Echo 中获取连接状态/其他事件【英文标题】:How to get connection status / other events in laravel Echo 【发布时间】:2019-06-24 19:04:44 【问题描述】:我开发了一个仪表板,它通过自定义事件获取实时通知。我想要实现的是能够在频道之间切换。我使用 Vue(x) 作为前端。
created()
this.setTeam(this.$router.currentRoute.name);
this.clearFastlanes();
this.getSprintInfo('getSprintInfo');
window.Echo.channel(this.getTeam)
.listen('.jira.issue', this.jiraIssue)
.listen('.jira.fastlane', this.jiraFastlane);
,
这是我订阅自定义事件的主要组件。唯一的问题是,这个组件也被另一个团队使用。所以我想将我的频道更改为当前团队(离开当前频道并加入新团队的频道)。我真的无法在互联网上找到如何做到这一点。
这就是我的连接方式:
window.Echo = new Echo(
broadcaster: 'pusher',
key: '29564c255fe1dae3654b',
cluster: 'eu',
encrypted: true,
);
所以基本上我想问 laravel echo 我当前是否已连接,如果是,请离开频道并连接到新团队。
有人知道如何实现这一目标吗?
【问题讨论】:
【参考方案1】:对于连接:
window.Echo.connector.pusher.connection.bind('connected', () =>
console.log('connected');
);
断开连接:
window.Echo.connector.pusher.connection.bind('disconnected', () =>
console.log('disconnected);
);
【讨论】:
这里有推送状态pusher.com/docs/channels/using_channels/… 你也可以使用下一个监听所有状态事件:pusher.connection.bind('state_change', () => ... );
【参考方案2】:
Socket IO 解决方案
以下是监听“连接”、“断开”和“重新连接”事件的方法。
连接:
window.Echo.connector.socket.on('connect', () =>
//your code
);
断开连接:
window.Echo.connector.socket.on('disconnect', () =>
//your code
);
重新连接:
window.Echo.connector.socket.on('reconnecting', (attemptNumber) =>
//your code
console.log(`%cSocket reconnecting attempt $attemptNumber`, 'color:orange; font-weight:700;');
);
【讨论】:
以上是关于如何在 laravel Echo 中获取连接状态/其他事件的主要内容,如果未能解决你的问题,请参考以下文章
试图获取每个连接记录都处于非活动状态的外键记录(Laravel 雄辩查询)