For convenience, the
jsonrpc library comes with a built-in
jsonrpc-process-connection transport implementation that can
talk to local subprocesses (using the standard input and standard
output); or TCP hosts (using sockets); or any other remote endpoint
that Emacs’s process object can represent (see Processes).
Using this transport, the JSONRPC messages are encoded on the wire as plain text and prefaced by some basic HTTP-style enveloping headers, such as “Content-Length”.
For an example of an application using this transport scheme on top of JSONRPC, see the Language Server Protocol.
Along with the mandatory
:notification-dispatcher initargs, users of the
jsonrpc-process-connection class should pass the following
initargs as keyword-value pairs to
Value must be a live process object or a function of no arguments producing one such object. If passed a process object, the object is expected to contain a pre-established connection; otherwise, the function is called immediately after the object is made.
Value must be a function of a single argument, the
jsonrpc-process-connection object. The function is called
after the underlying process object has been deleted (either
jsonrpc-shutdown, or unexpectedly, because of
some external cause).