首页 > 解决方案 > 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()没有。我究竟做错了什么?

标签: phplaravellaravel-echolaravel-broadcast

解决方案


Docs中所述:

  • 一旦频道加入成功,here回调将立即执行,并接收一个包含当前订阅频道的所有其他用户的用户信息的数组;
  • joining方法会在新用户加入频道时执行;
  • 而该leaving方法将在用户离开频道时执行。

所以,你应该使用另一个用户加入这个频道,然后当前用户将能够收到加入和离开的回调。


推荐阅读