【问题标题】:Laravel Echo joining() and leaving() methods are not triggeredLaravel Echo join() 和 leave() 方法不会被触发
【发布时间】:2019-08-29 10:35:37
【问题描述】:

这是我的 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() 方法没有被触发。我做错了什么?

【问题讨论】:

  • 您确定test.1 是一个出席频道并且其他人实际上正在加入/离开吗?
  • 可以分享一下 laravel 后端代码吗?
  • @gbalduzzi 我从 channels.php 返回数组而不是 true/false。所以我相信 laravel 将其视为一个存在渠道。是的,我以用户身份登录并访问(安装)组件并在登录时离开(销毁)组件。
  • @atouiahmed 您希望查看后端代码的哪一部分? :)
  • 明确一点,joiningleaving 仅在其他人加入或离开频道时触发,而不是在实际用户加入或离开时触发。跨度>

标签: php laravel laravel-echo laravel-broadcast


【解决方案1】:

Docs中所述:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    相关资源
    最近更新 更多