aboutsummaryrefslogtreecommitdiffstats
path: root/language-web/src/main/js/xtext/XtextWebSocketClient.ts
diff options
context:
space:
mode:
Diffstat (limited to 'language-web/src/main/js/xtext/XtextWebSocketClient.ts')
-rw-r--r--language-web/src/main/js/xtext/XtextWebSocketClient.ts34
1 files changed, 15 insertions, 19 deletions
diff --git a/language-web/src/main/js/xtext/XtextWebSocketClient.ts b/language-web/src/main/js/xtext/XtextWebSocketClient.ts
index 839d6518..488e4b3b 100644
--- a/language-web/src/main/js/xtext/XtextWebSocketClient.ts
+++ b/language-web/src/main/js/xtext/XtextWebSocketClient.ts
@@ -27,14 +27,14 @@ const REQUEST_TIMEOUT_MS = 1000;
27 27
28const log = getLogger('xtext.XtextWebSocketClient'); 28const log = getLogger('xtext.XtextWebSocketClient');
29 29
30type ReconnectHandler = () => Promise<void>; 30export type ReconnectHandler = () => void;
31 31
32type PushHandler = ( 32export type PushHandler = (
33 resourceId: string, 33 resourceId: string,
34 stateId: string, 34 stateId: string,
35 service: string, 35 service: string,
36 data: unknown, 36 data: unknown,
37) => Promise<void>; 37) => void;
38 38
39enum State { 39enum State {
40 Initial, 40 Initial,
@@ -47,29 +47,29 @@ enum State {
47} 47}
48 48
49export class XtextWebSocketClient { 49export class XtextWebSocketClient {
50 nextMessageId = 0; 50 private nextMessageId = 0;
51 51
52 connection!: WebSocket; 52 private connection!: WebSocket;
53 53
54 pendingRequests = new Map<string, PendingTask<unknown>>(); 54 private readonly pendingRequests = new Map<string, PendingTask<unknown>>();
55 55
56 onReconnect: ReconnectHandler; 56 private readonly onReconnect: ReconnectHandler;
57 57
58 onPush: PushHandler; 58 private readonly onPush: PushHandler;
59 59
60 state = State.Initial; 60 private state = State.Initial;
61 61
62 reconnectTryCount = 0; 62 private reconnectTryCount = 0;
63 63
64 idleTimer = new Timer(() => { 64 private readonly idleTimer = new Timer(() => {
65 this.handleIdleTimeout(); 65 this.handleIdleTimeout();
66 }, BACKGROUND_IDLE_TIMEOUT_MS); 66 }, BACKGROUND_IDLE_TIMEOUT_MS);
67 67
68 pingTimer = new Timer(() => { 68 private readonly pingTimer = new Timer(() => {
69 this.sendPing(); 69 this.sendPing();
70 }, PING_TIMEOUT_MS); 70 }, PING_TIMEOUT_MS);
71 71
72 reconnectTimer = new Timer(() => { 72 private readonly reconnectTimer = new Timer(() => {
73 this.handleReconnect(); 73 this.handleReconnect();
74 }); 74 });
75 75
@@ -115,9 +115,7 @@ export class XtextWebSocketClient {
115 this.nextMessageId = 0; 115 this.nextMessageId = 0;
116 this.reconnectTryCount = 0; 116 this.reconnectTryCount = 0;
117 this.pingTimer.schedule(); 117 this.pingTimer.schedule();
118 this.onReconnect().catch((error) => { 118 this.onReconnect();
119 log.error('Unexpected error in onReconnect handler', error);
120 });
121 }); 119 });
122 this.connection.addEventListener('error', (event) => { 120 this.connection.addEventListener('error', (event) => {
123 log.error('Unexpected websocket error', event); 121 log.error('Unexpected websocket error', event);
@@ -264,9 +262,7 @@ export class XtextWebSocketClient {
264 message.stateId, 262 message.stateId,
265 message.service, 263 message.service,
266 message.push, 264 message.push,
267 ).catch((error) => { 265 );
268 log.error('Unexpected error in onPush handler', error);
269 });
270 } else { 266 } else {
271 log.error('Unexpected websocket message', message); 267 log.error('Unexpected websocket message', message);
272 this.forceReconnectOnError(); 268 this.forceReconnectOnError();