我正在运行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是第二个用户(不是我键入消息的那个用户)。
但是浏览器控制台中什么也没出现。
答案 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}) => {
//....
}
}
}