Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 拉雷维尔回声和耳语_Laravel_Echo_Whisper - Fatal编程技术网

Laravel 拉雷维尔回声和耳语

Laravel 拉雷维尔回声和耳语,laravel,echo,whisper,Laravel,Echo,Whisper,我正在运行echo服务器和redis。私人频道工作得很好,我为它构建的消息传递也很有效。现在,我正试图让窃窃私语工作的打字状态以及,但没有运气。“耳语”需要推手才能工作吗 我在keyup(jquery)上的尝试 然后,我当然在收听我正在耳语的频道: Echo.private(chat- + userid).listenForWhisper('typing', (e) => { console.log(e + ' this is typing'); }); 但我什么也得不到。(在echo服

我正在运行echo服务器和redis。私人频道工作得很好,我为它构建的消息传递也很有效。现在,我正试图让窃窃私语工作的打字状态以及,但没有运气。“耳语”需要推手才能工作吗

我在keyup(jquery)上的尝试

然后,我当然在收听我正在耳语的频道:

Echo.private(chat- + userid).listenForWhisper('typing', (e) => {
console.log(e + ' this is typing');
});
但我什么也得不到。(在echo服务器上进行调试,在控制台上不进行任何操作等)非常感谢您对如何使其正常工作的任何帮助

您的输入事件:

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

  setTimeout( () => {
    channel.whisper('typing', {
      user: userid,
      typing: true
    })
  }, 300)
})
您的听力活动:

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

setTimeout( () => {
  $('.typing').hide()
}, 1000)
当然,您必须提前为此通道设置身份验证,以确保受信任方具有访问权限:

Broadcast::channel('chat', function ($user) {
    return Auth::check();
});

其中,
$user
将是我们在前端对象中传递给
用户的
用户ID
参数。

这就是我的ReactJS组件DidMount的样子。 你的听力事件

componentDidMount(){
let timer;//每次用户耳语时清除的计时器变量
Echo.join(‘聊天室’)
.这里(…)
.加入(……)
.离开(……)
.听着(…)
}).listenforwhister('typing',(e)=>{
这是我的国家({
键入:e.name
});
清除超时(计时器);//{
这是我的国家({
键入:空
});
}, 500);
});

}
非常感谢!这正是我需要的。现在可以工作了。@Ohgod为什么在本例中,
$('.typing')
是最有可能包含文本内容的元素,如,
${user}正在键入…
,对吗?@Tanmay Correct!
Broadcast::channel('chat', function ($user) {
    return Auth::check();
});