I've been studying the Language Server Protocol recently. Correct me if I'm wrong - from what I understand, the language server seems to be an actual server running on the user's machine in a separate process from the code editor (or IDE), that communicates with the IDE through websockets.
If that's true, how do web-based code editors (like Gitpod and GitHub Codespaces) work? Do they use self-hosted language servers for the major languages? Or do they just do away with the websocket transport layer and use a modified version of language servers like an in-memory object?