我正在玩语言服务器协议。在玩了一段时间之后,我可以看到两种与语言服务器通信的方式,即阻塞套接字和非阻塞套接字。
通过阻塞套接字我的意思是发送请求并阻塞直到响应。这很简单,但是一旦我在GUI应用程序中使用它,它将阻止UI。另一个是使用异步/非阻塞套接字。这有点复杂,可能需要一些回调/事件机制。
现在我的问题是VSCode使用哪种方式与LSP通信?
许多扩展使用的node language server implementation使用非阻塞通信。你可以找到实现here。它使用nodejs流和net
模块