Angular 8 Websocket用户使用rxjs键入事件
我正在通过.Net后端上的Websocket在Angular 8中构建一个聊天应用程序。我需要一些帮助,试图获得“用户键入…”事件从角度到套接字。我的socket服务器需要在用户开始键入和停止键入时接收数据,并将其传递给收件人。我有一个基本的反应式表单,带有一个输入控件,它给了我valueChanges事件。我已经尝试了许多可能的RxJS操作符组合来实现这一点,但无法实现。请帮忙 我得到的最接近的是下面Angular 8 Websocket用户使用rxjs键入事件,angular,typescript,websocket,chat,rxjs6,Angular,Typescript,Websocket,Chat,Rxjs6,我正在通过.Net后端上的Websocket在Angular 8中构建一个聊天应用程序。我需要一些帮助,试图获得“用户键入…”事件从角度到套接字。我的socket服务器需要在用户开始键入和停止键入时接收数据,并将其传递给收件人。我有一个基本的反应式表单,带有一个输入控件,它给了我valueChanges事件。我已经尝试了许多可能的RxJS操作符组合来实现这一点,但无法实现。请帮忙 我得到的最接近的是下面 this.newMessageForm.get('message').valueChange
this.newMessageForm.get('message').valueChanges
.pipe(
first(),
tap(value => console.log('User is typing...')),
debounceTime(1000)
)
.subscribe(value => {
console.log('User has stopped typing');
});
上面通过给我流的第一个值来给我开始键入事件,但是如果用户停止并再次开始键入,它不会重置。我是Rxjs的新手。请帮忙
谢谢也许你的想法太复杂了 因此,我尝试了一些更简单的辅助函数:
// ......
私有IsTyping:boolean;//私有变量
// ......
this.newMessageForm.get('message').valueChanges
.烟斗(
点击(value=>this.checkTyping(true)),
去BounceTime(1000))
.subscribe(值=>{
此项。检查键入(错误);
});
// ......
检查类型(isTyping:布尔型){
if(isTyping!==此.isTyping){
this.IsTyping=IsTyping;
如果(正在键入){
log(“用户正在键入…”);
}否则{
log(“用户已停止键入”);
}
}
}
看哇,你是对的。我想得太多了。这就搞定了…非常感谢你。。。。