@eclipse-glsp/protocol
Version:
The protocol definition for client-server communication in GLSP
52 lines • 2.15 kB
TypeScript
/********************************************************************************
* Copyright (c) 2023-2024 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
/// <reference types="node" />
import { Logger, MessageConnection } from 'vscode-jsonrpc';
import { MaybePromise } from '../../utils/type-util';
export interface GLSPWebSocketOptions {
/**
* Allow automatic reconnect of WebSocket connections
* @default true
*/
reconnecting?: boolean;
/**
* Max attempts of reconnects
* @default Infinity
*/
reconnectAttempts?: number;
/**
* The time delay in milliseconds between reconnect attempts
* @default 1000
*/
reconnectDelay?: number;
}
export declare const GLSPConnectionHandler: unique symbol;
export interface GLSPConnectionHandler {
onConnection?(connection: MessageConnection): MaybePromise<void>;
onReconnect?(connection: MessageConnection): MaybePromise<void>;
logger?: Logger;
}
export declare class GLSPWebSocketProvider {
protected url: string;
protected webSocket: WebSocket;
protected reconnectTimer: NodeJS.Timeout;
protected reconnectAttempts: number;
protected options: GLSPWebSocketOptions;
constructor(url: string, options?: GLSPWebSocketOptions);
protected createWebSocket(url: string): WebSocket;
listen(handler: GLSPConnectionHandler, isReconnecting?: boolean): Promise<MessageConnection>;
}
//# sourceMappingURL=ws-connection-provider.d.ts.map