diff options
author | Kristóf Marussy <kristof@marussy.com> | 2021-10-31 15:02:16 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2021-10-31 19:26:15 +0100 |
commit | 36a2f8a6e0c19f728ddd8e88ccd45fa2a7aea283 (patch) | |
tree | 6f27bf231184646287bb502e0533f7f16e2db026 /language-web/src/main/js/xtext/XtextWebSocketClient.ts | |
parent | fix(web): undo/redo button accessibility issue (diff) | |
download | refinery-36a2f8a6e0c19f728ddd8e88ccd45fa2a7aea283.tar.gz refinery-36a2f8a6e0c19f728ddd8e88ccd45fa2a7aea283.tar.zst refinery-36a2f8a6e0c19f728ddd8e88ccd45fa2a7aea283.zip |
chore(web): refactor xtext client
Diffstat (limited to 'language-web/src/main/js/xtext/XtextWebSocketClient.ts')
-rw-r--r-- | language-web/src/main/js/xtext/XtextWebSocketClient.ts | 34 |
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 | ||
28 | const log = getLogger('xtext.XtextWebSocketClient'); | 28 | const log = getLogger('xtext.XtextWebSocketClient'); |
29 | 29 | ||
30 | type ReconnectHandler = () => Promise<void>; | 30 | export type ReconnectHandler = () => void; |
31 | 31 | ||
32 | type PushHandler = ( | 32 | export 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 | ||
39 | enum State { | 39 | enum State { |
40 | Initial, | 40 | Initial, |
@@ -47,29 +47,29 @@ enum State { | |||
47 | } | 47 | } |
48 | 48 | ||
49 | export class XtextWebSocketClient { | 49 | export 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(); |