Laravel 回声和耳语

EmJ*_*iEn 2 echo laravel whisper

我正在运行 echo 服务器和 redis。私人频道完美运行,我为它构建的消息传递也有效。现在我试图让耳语也适用于打字状态,但没有运气。耳语是否需要推动器才能工作?

我在 keyup (jquery) 上的尝试

Echo.private(chat- + userid)
.whisper('typing',{e: 'i am is typing...'});
console.log('key up'); // this one works so the keyup is triggered
Run Code Online (Sandbox Code Playgroud)

那么我当然是在听我正在耳语的频道:

Echo.private(chat- + userid).listenForWhisper('typing', (e) => {
console.log(e + ' this is typing');
});
Run Code Online (Sandbox Code Playgroud)

但我在任何地方都一无所获。(在回显服务器上调试,控制台上没有任何内容)任何有关如何使其工作的帮助将不胜感激。

Ohg*_*why 8

您的输入事件:

$('input').on('keydown', function(){
  let channel = Echo.private('chat')

  setTimeout( () => {
    channel.whisper('typing', {
      user: userid,
      typing: true
    })
  }, 300)
})
Run Code Online (Sandbox Code Playgroud)

您的聆听活动:

Echo.private('chat')
  .listenForWhisper('typing', (e) => {
    e.typing ? $('.typing').show() : $('.typing').hide()
  })

setTimeout( () => {
  $('.typing').hide()
}, 1000)
Run Code Online (Sandbox Code Playgroud)

当然,您必须提前为此通道设置身份验证,以确保受信任方可以访问:

Broadcast::channel('chat', function ($user) {
    return Auth::check();
});
Run Code Online (Sandbox Code Playgroud)

$user将是userid我们传递给userPARAM在我们的对象上的前端。