VSCode 是否使用与 LSP 的阻塞通信

Does VSCode use blocking communication with LSP

我正在研究语言服务器协议。玩了一段时间后,我看到了两种与语言服务器通信的方式,一种是阻塞套接字,一种是非阻塞套接字。

我所说的阻塞套接字是指发送请求并阻塞直到响应。这很简单,但是一旦我在 GUI 应用程序中使用它,它就会阻止 UI。另一个正在使用 async/non-blocking 套接字。这有点复杂,可能需要一些 callback/event 机制。

现在我的问题是 VSCode 使用哪种方式与 LSP 通信?

node language server implementation used by many extensions uses non-blocking communications. You can find the implementation here。它使用 nodejs 流和 net 模块