diff --git a/.vscode/launch.json b/.vscode/launch.json index 06f959e8..f892c3fc 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -21,7 +21,8 @@ "--plugins=local-dir:../plugins", "--hosted-plugin-inspect=9339", "--content-trace", - "--open-devtools" + "--open-devtools", + "--no-ping-timeout", ], "env": { "NODE_ENV": "development" @@ -56,7 +57,8 @@ "--remote-debugging-port=9222", "--no-app-auto-install", "--plugins=local-dir:../plugins", - "--hosted-plugin-inspect=9339" + "--hosted-plugin-inspect=9339", + "--no-ping-timeout", ], "env": { "NODE_ENV": "development" diff --git a/arduino-ide-extension/src/node/arduino-ide-backend-module.ts b/arduino-ide-extension/src/node/arduino-ide-backend-module.ts index 9d3ad355..09294f96 100644 --- a/arduino-ide-extension/src/node/arduino-ide-backend-module.ts +++ b/arduino-ide-extension/src/node/arduino-ide-backend-module.ts @@ -109,6 +109,8 @@ import { } from '../common/protocol/survey-service'; import { IsTempSketch } from './is-temp-sketch'; import { rebindNsfwFileSystemWatcher } from './theia/filesystem/nsfw-watcher/nsfw-bindings'; +import { MessagingContribution } from './theia/core/messaging-contribution'; +import { MessagingService } from '@theia/core/lib/node/messaging/messaging-service'; export default new ContainerModule((bind, unbind, isBound, rebind) => { bind(BackendApplication).toSelf().inSingletonScope(); @@ -379,6 +381,9 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => { .inSingletonScope(); bind(IsTempSketch).toSelf().inSingletonScope(); + rebind(MessagingService.Identifier) + .to(MessagingContribution) + .inSingletonScope(); }); function bindChildLogger(bind: interfaces.Bind, name: string): void { diff --git a/arduino-ide-extension/src/node/theia/core/messaging-contribution.ts b/arduino-ide-extension/src/node/theia/core/messaging-contribution.ts new file mode 100644 index 00000000..7c03c769 --- /dev/null +++ b/arduino-ide-extension/src/node/theia/core/messaging-contribution.ts @@ -0,0 +1,11 @@ +import { MessagingContribution as TheiaMessagingContribution } from '@theia/core/lib/node/messaging/messaging-contribution'; +import { injectable } from '@theia/core/shared/inversify'; +@injectable() +export class MessagingContribution extends TheiaMessagingContribution { + // https://github.com/eclipse-theia/theia/discussions/11543 + protected override checkAliveTimeout = process.argv.includes( + '--no-ping-timeout' + ) + ? 24 * 60 * 60 * 1_000 // one day + : 30_000; +}