Node.js SocketIO不触发第一个客户端事件
我正在构建一个聊天应用程序。问题是,Node.js SocketIO不触发第一个客户端事件,node.js,angular,typescript,socket.io,ionic3,Node.js,Angular,Typescript,Socket.io,Ionic3,我正在构建一个聊天应用程序。问题是,socket.io在触发时不会在第一个客户端上发出keypress事件 我用爱奥尼亚3号&Angular 5号 “错误” myview.html <p *ngIf="typing == true">... is typing</p> <ion-item no-lines> <ion-input type="text" placeholder="Message" [(n
socket.io
在触发时不会在第一个客户端上发出keypress
事件
我用爱奥尼亚3号&Angular 5号
“错误”
myview.html
<p *ngIf="typing == true">... is typing</p>
<ion-item no-lines>
<ion-input
type="text"
placeholder="Message"
[(ngModel)]="message"
(keypress)="userIsTyping()">
</ion-input>
</ion-item>
myserver.js
io.on('connection', (socket) => {
socket.on('typing', () => {
socket.broadcast.emit('updateTyping', {
isTyping: true
});
setTimeout(() => {
socket.broadcast.emit('updateTyping', {
isTyping: false
});
}, 2000);
});
你有什么解决办法吗?
谢谢你们 好的,问题是如何定义套接字侦听器。您正在将
this.socket.on(“updateTyping”)
的事件侦听器设置在只在开始键入时运行的代码块中。因此,每次开始键入时,都会创建一个新的重复事件侦听器。但是,因为它仅在您开始键入时定义,“正在键入…”将不会显示,直到您至少键入一个字符,此时它将开始侦听
答案基本上是将套接字侦听器移到userIsTyping()函数之外
this.socket.on("updateTyping", (data) => {
console.log('typingInSocket = ' + data.isTyping);
this.typing = data.isTyping;
});
userIsTyping() {
this.socket.emit('typing');
}
如果你点击每个屏幕的输入框,不输入任何内容,然后返回到第一个屏幕,它工作吗?在我看来,client socket.io在您将焦点放入窗口之前不会连接。我觉得奇怪的是,typing=false
出现在左侧窗口,而不是右侧。我也觉得很奇怪,因为我认为根本没有按键far@MattFletcher“typing=false”出现在第一次按键时,gif跳过了start:x的1s,我希望这只是一个窗口焦点问题,但这不是问题所在。我一整天都在这上面,没有解决办法。我太悲伤了。我刚刚意识到这是什么。。。
this.socket.on("updateTyping", (data) => {
console.log('typingInSocket = ' + data.isTyping);
this.typing = data.isTyping;
});
userIsTyping() {
this.socket.emit('typing');
}