VSCode JSON RPC
This npm module implements the base messaging protocol spoken between a VSCode language server and a VSCode language client.
The npm module can also be used standalone to establish a JSON-RPC channel between
a client and a server. Below an example how to setup a JSON-RPC connection. First the client side.
import * as cp from ' child_process ' ;
import * as rpc from ' vscode-jsonrpc ' ;
let childProcess = cp . spawn ( ... ) ;
let connection = rpc . createMessageConnection (
new rpc . StreamMessageReader ( childProcess . stdout ) ,
new rpc . StreamMessageWriter ( childProcess . stdin ) ) ;
let notification = new NotificationType < string , void > ( ' testNotification ' ) ;
connection . listen ( ) ;
connection . sendNotification ( notification , ' Hello World ' ) ;
The server side looks very symmetrical:
import * as rpc from ' vscode-jsonrpc ' ;
let connection = rpc . createMessageConnection (
new rpc . StreamMessageReader ( process . stdin ) ,
new rpc . StreamMessageWriter ( process . stdout ) ) ;
let notification = new NotificationType < string , void > ( ' testNotification ' ) ;
connection . onNotification ( notification , ( param : string ) => {
console . log ( param ) ;
} ) ;
connection . listen ( ) ;
History
3.0.0:
converted the NPM module to use TypeScript 2.0.3.
added strict null support.
support for passing more than one parameter to a request or notification.
Breaking changes:
due to the use of TypeScript 2.0.3 and differences in d.ts generation users of the new version need to move to
TypeScript 2.0.3 as well.
License
MIT