mirror of
https://github.com/danog/code-server.git
synced 2024-11-30 04:39:46 +01:00
refactor: heartbeat patch (#5545)
This commit is contained in:
parent
3fb38414dd
commit
5028169e63
@ -1,37 +0,0 @@
|
|||||||
Add a heartbeat to web socket connections
|
|
||||||
|
|
||||||
This prevents them from being killed when they are idle. To test run behind
|
|
||||||
NGINX, make sure the sockets are idle (check dev tools), then wait 60+ seconds.
|
|
||||||
|
|
||||||
Index: code-server/lib/vscode/src/vs/base/parts/ipc/common/ipc.net.ts
|
|
||||||
===================================================================
|
|
||||||
--- code-server.orig/lib/vscode/src/vs/base/parts/ipc/common/ipc.net.ts
|
|
||||||
+++ code-server/lib/vscode/src/vs/base/parts/ipc/common/ipc.net.ts
|
|
||||||
@@ -7,6 +7,7 @@ import { VSBuffer } from 'vs/base/common
|
|
||||||
import { Emitter, Event } from 'vs/base/common/event';
|
|
||||||
import { Disposable, dispose, IDisposable } from 'vs/base/common/lifecycle';
|
|
||||||
import { IIPCLogger, IMessagePassingProtocol, IPCClient } from 'vs/base/parts/ipc/common/ipc';
|
|
||||||
+import { isWeb } from 'vs/base/common/platform';
|
|
||||||
|
|
||||||
export const enum SocketDiagnosticsEventType {
|
|
||||||
Created = 'created',
|
|
||||||
@@ -849,6 +850,19 @@ export class PersistentProtocol implemen
|
|
||||||
this._socketDisposables.push(this._socketWriter);
|
|
||||||
this._socketReader = new ProtocolReader(this._socket);
|
|
||||||
this._socketDisposables.push(this._socketReader);
|
|
||||||
+ // Send empty messages to keep the socket alive. We only need this on the
|
|
||||||
+ // web where sockets can be killed by reverse proxies for inactivity.
|
|
||||||
+ if (isWeb) {
|
|
||||||
+ const timer = setInterval(() => {
|
|
||||||
+ const msg = new ProtocolMessage(ProtocolMessageType.None, 0, 0, getEmptyBuffer());
|
|
||||||
+ this._socketWriter.write(msg);
|
|
||||||
+ }, 45000); // NGINX has a 60 second default timeout so try 45 seconds.
|
|
||||||
+ this._socketDisposables.push({
|
|
||||||
+ dispose: () => {
|
|
||||||
+ clearInterval(timer);
|
|
||||||
+ },
|
|
||||||
+ });
|
|
||||||
+ }
|
|
||||||
this._socketDisposables.push(this._socketReader.onMessage(msg => this._receiveMessage(msg)));
|
|
||||||
this._socketDisposables.push(this._socket.onClose((e) => this._onSocketClose.fire(e)));
|
|
||||||
if (initialChunk) {
|
|
@ -20,6 +20,5 @@ disable-downloads.diff
|
|||||||
telemetry.diff
|
telemetry.diff
|
||||||
display-language.diff
|
display-language.diff
|
||||||
cli-window-open.diff
|
cli-window-open.diff
|
||||||
heartbeat.diff
|
|
||||||
exec-argv.diff
|
exec-argv.diff
|
||||||
safari-console.diff
|
safari-console.diff
|
||||||
|
Loading…
Reference in New Issue
Block a user