php - Laravel Echo join() 和 leave() 方法不会被触发
问题描述
这是我的 Echo 配置:
window.Echo = new Echo({
authEndpoint: process.env.VUE_APP_API_ENDPOINT.replace('/v1', '/broadcasting/auth'),
broadcaster: 'pusher',
key: 'someKey',
wsHost: window.location.hostname,
wsPort: 6001,
disableStats: true
});
window.Echo.connector.pusher.config.auth.headers['Authorization'] = 'Bearer ' + token;
在我的 vue 组件的 mount() 钩子中,我有:
window.Echo.join(`test.1`)
.here((users) => {
console.log(users);
})
.joining((user) => {
console.log(user.name);
})
.leaving((user) => {
console.log('Leaving');
});
在destroy() 钩子中:
window.Echo.leave('test.1')
但只有here()
方法被触发,joining()
方法leaving()
没有。我究竟做错了什么?
解决方案
如Docs中所述:
- 一旦频道加入成功,
here
回调将立即执行,并接收一个包含当前订阅频道的所有其他用户的用户信息的数组; - 该
joining
方法会在新用户加入频道时执行; - 而该
leaving
方法将在用户离开频道时执行。
所以,你应该使用另一个用户加入这个频道,然后当前用户将能够收到加入和离开的回调。