mirror of
https://github.com/massbug/judge4c.git
synced 2025-05-18 07:16:34 +00:00
refactor(language-server): modify connectToLanguageServer
to return both client and webSocket
This commit is contained in:
parent
f246ff1a6d
commit
1796d21a09
@ -7,8 +7,7 @@ import { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from "vscode
|
|||||||
// Create the WebSocket URL based on the protocol and port
|
// Create the WebSocket URL based on the protocol and port
|
||||||
function createUrl(languageServerConfig: LanguageServerConfig): string {
|
function createUrl(languageServerConfig: LanguageServerConfig): string {
|
||||||
return normalizeUrl(
|
return normalizeUrl(
|
||||||
`${languageServerConfig.protocol}://${languageServerConfig.hostname}${
|
`${languageServerConfig.protocol}://${languageServerConfig.hostname}${languageServerConfig.port ? `:${languageServerConfig.port}` : ""
|
||||||
languageServerConfig.port ? `:${languageServerConfig.port}` : ""
|
|
||||||
}${languageServerConfig.path || ""}`
|
}${languageServerConfig.path || ""}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -34,9 +33,7 @@ async function createLanguageClient(
|
|||||||
},
|
},
|
||||||
// create a language client connection from the JSON RPC connection on demand
|
// create a language client connection from the JSON RPC connection on demand
|
||||||
connectionProvider: {
|
connectionProvider: {
|
||||||
get: () => {
|
get: () => Promise.resolve(transports),
|
||||||
return Promise.resolve(transports);
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -45,7 +42,7 @@ async function createLanguageClient(
|
|||||||
export function connectToLanguageServer(
|
export function connectToLanguageServer(
|
||||||
editorLanguageConfig: EditorLanguageConfig,
|
editorLanguageConfig: EditorLanguageConfig,
|
||||||
languageServerConfig: LanguageServerConfig
|
languageServerConfig: LanguageServerConfig
|
||||||
): Promise<MonacoLanguageClient> {
|
): Promise<{ client: MonacoLanguageClient; webSocket: WebSocket }> {
|
||||||
const url = createUrl(languageServerConfig);
|
const url = createUrl(languageServerConfig);
|
||||||
const webSocket = new WebSocket(url);
|
const webSocket = new WebSocket(url);
|
||||||
|
|
||||||
@ -57,14 +54,18 @@ export function connectToLanguageServer(
|
|||||||
const writer = new WebSocketMessageWriter(socket);
|
const writer = new WebSocketMessageWriter(socket);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const languageClient = await createLanguageClient({ reader, writer }, editorLanguageConfig);
|
const languageClient = await createLanguageClient(
|
||||||
|
{ reader, writer },
|
||||||
|
editorLanguageConfig
|
||||||
|
);
|
||||||
|
|
||||||
// Start the language client
|
// Start the language client
|
||||||
languageClient.start();
|
languageClient.start();
|
||||||
|
|
||||||
// Stop the language client when the reader closes
|
// Stop the language client when the reader closes
|
||||||
reader.onClose(() => languageClient.stop());
|
reader.onClose(() => languageClient.stop());
|
||||||
|
|
||||||
resolve(languageClient);
|
resolve({ client: languageClient, webSocket });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
reject(error);
|
reject(error);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user