Laravel Echo和Whisper,listenForWhisper无法正常工作

时间:2018-12-25 09:18:07

标签: laravel echo whisper

我正在运行Echo服务器和Beyondcode(推送程序)。存在通道可以完美运行,而我为此创建的消息传递也可以正常工作。现在,我也试图让窃窃私语也能满足打字状态,但没有运气。

发送悄悄话:

let channel = Echo.join('chat')

setTimeout( () => {
    channel.whisper('typing', {
    user: Laravel.user.id,
    typing: true
    })
}, 300)

听耳语

Echo.join('chat')
.listenForWhisper('typing', (e) => {
    console.log(e)
});

在我的回显服务器日志中,当我键入消息时:

testapp: connection id 332742863.966987392 received message: 
{
    "event":"client-typing",
    "data":{
        "user":2,
        "typing":true
    },
    "channel":"presence-chat"
}

广播频道(routes / channels.php)

Broadcast::channel('chat', function ($user) {
    return [
        'id' => $user->id,
        'name' => $user->name
    ];
});

连接ID 332742863.966987392是第二个用户(不是我键入消息的那个用户)。

但是浏览器控制台中什么也没出现。

3 个答案:

答案 0 :(得分:2)

将其留在这里供将来的用户使用,可能会在

中接收事件时遇到问题
.listenForWhisper(..)

如果您使用的是 laravel-websockets ,请确保启用 'enable_client_messages'

答案 1 :(得分:1)

我知道这已经很老了,但是我的问题是我没有从Pusher应用程序设置中启用名为“启用客户端事件”的选项。

答案 2 :(得分:0)

将listenForWhisper添加到created()方法(创建Vue应用程序)后,问题得到解决

const app = new Vue({
    el: '#app',
    created() {
        Echo.join('chat').listenForWhisper('typing', ({id, name}) => {
            //....
        }
    }
}