Javascript 角度:关于Websocket重联的一个问题
我设置了一个超时函数,在连接断开后等待并触发重新连接 我的角度是11 以下是我的WebsocketService代码:Javascript 角度:关于Websocket重联的一个问题,javascript,angular,typescript,websocket,Javascript,Angular,Typescript,Websocket,我设置了一个超时函数,在连接断开后等待并触发重新连接 我的角度是11 以下是我的WebsocketService代码: import { Injectable } from '@angular/core' @Injectable() export class WebSocketService { constructor() { this.init(); } init() { var ws = new WebSocket('ws
import { Injectable } from '@angular/core'
@Injectable()
export class WebSocketService {
constructor() {
this.init();
}
init() {
var ws = new WebSocket('ws://localhost:8080');
ws.onopen = (event) => {
console.log('WebSocket connected');
}
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log(data);
}
ws.onclose = (event) => {
console.log('Close WebSocket connection');
setTimeout(this.init, 1000);
}
ws.onerror = (event) => {
console.log(`WebSocket connection error: ${event}`);
ws.close();
}
}
}
我的问题是setTimeout函数总是被触发两次
那它就不起作用了
你有什么建议吗
谢谢 在开始超时后,创建一个变量并清除超时。在
ws.onclose
函数中,需要清除上一个超时,然后重新开始。@akhilarvind它不起作用。变量总是从setTimeout中获取未定义的值。您是如何尝试的,您可以共享代码块吗?@AkhilAravind我找到了答案。我应该将其修改为this.timer=setTimeout(this.init.bind(this),1000)代码>。裁判: