Laravel回声和耳语
Laravel Echo and whisper
我是运行回显服务器和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
那我当然是在听我耳语的频道了:
Echo.private(chat- + userid).listenForWhisper('typing', (e) => {
console.log(e + ' this is typing');
});
但我在任何地方都一无所获。 (在回声服务器上调试,控制台上没有任何内容等)任何帮助如何让它工作将不胜感激。
您的输入事件:
$('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
将是我们在前端对象中传递给 user
参数的 userid
。
这就是我的 ReactJS componentDidMount 的样子。
您的收听活动。
componentDidMount() {
let timer; // timer variable to be cleared every time the user whispers
Echo.join('chatroom')
.here(...)
.joining(...)
.leaving(...)
.listen(...)
}).listenForWhisper('typing', (e) => {
this.setState({
typing: e.name
});
clearTimeout(timer); // <-- clear
// Take note of the 'clearTimeout' before setting another 'setTimeout' timer.
// This will clear previous timer that will make your typing status
// 'blink' if not cleared.
timer = setTimeout(() => {
this.setState({
typing: null
});
}, 500);
});
}
我是运行回显服务器和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
那我当然是在听我耳语的频道了:
Echo.private(chat- + userid).listenForWhisper('typing', (e) => {
console.log(e + ' this is typing');
});
但我在任何地方都一无所获。 (在回声服务器上调试,控制台上没有任何内容等)任何帮助如何让它工作将不胜感激。
您的输入事件:
$('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
将是我们在前端对象中传递给 user
参数的 userid
。
这就是我的 ReactJS componentDidMount 的样子。 您的收听活动。
componentDidMount() {
let timer; // timer variable to be cleared every time the user whispers
Echo.join('chatroom')
.here(...)
.joining(...)
.leaving(...)
.listen(...)
}).listenForWhisper('typing', (e) => {
this.setState({
typing: e.name
});
clearTimeout(timer); // <-- clear
// Take note of the 'clearTimeout' before setting another 'setTimeout' timer.
// This will clear previous timer that will make your typing status
// 'blink' if not cleared.
timer = setTimeout(() => {
this.setState({
typing: null
});
}, 500);
});
}