我希望实现一个使用语言服务器协议的VSCode扩展,但是我希望服务器组件在实际的服务器(云上)上运行,而不是作为VSCode扩展的一部分。
我可以将客户端扩展设置为通过WebSockets或HTTP连接到服务器吗?
我希望实现一个使用语言服务器协议的VSCode扩展,但是我希望服务器组件在实际的服务器(云上)上运行,而不是作为VSCode扩展的一部分。
我可以将客户端扩展设置为通过WebSockets或HTTP连接到服务器吗?
ServerOptions
的签名初始化LanguageClient
时,支持多个ServerOptions
。 StreamInfo
。以下是连接到您的服务器通过WebSocket
并初始化LanguageClient
的示例代码。const connection = connectToServer(hostname, path);
const client = new LanguageClient(
"docfxLanguageServer",
"Docfx Language Server",
() => Promise.resolve<StreamInfo>({
reader: connection,
writer: connection,
}),
{});
private connectToServer(hostname: string, path: string): Duplex {
const ws = new WebSocket(`ws://${hostname}/${path}`);
return WebSocket.createWebSocketStream(ws);
}
我不确定您是否可以控制语言服务器的位置,但还有另一种选择。例如,您不需要实现语言服务器协议来提供解析帮助。在这种情况下,您可以实现自己方便的解析服务API(根据您想要支持的语言的性质进行定制)。
workspace.onDidChangeTextDocument
订阅工作区编辑事件DiagnosticCollection
并用云端解析服务器产生的警告/错误/提示替换它workspace
事件,例如 workspace.onDidOpenTextDocument
或 workspace.onDidCloseTextDocument
,以使 DiagnosticCollection
内容保持相关