33.32.2 基于进程的 JSONRPC 连接

为方便使用,jsonrpc 库内置了 jsonrpc-process-connection 传输层实现, 可与本地子进程(使用标准输入与标准输出)、TCP 主机(使用套接字) 或 Emacs 进程对象可表示的任何其他远程端点通信(see 进程)。

使用该传输层时,JSONRPC 消息在线路上以纯文本编码, 并以一些基本的 HTTP 风格头部作为前缀,例如“Content-Length”。

有关在 JSONRPC 之上使用该传输方案的应用示例, 可参见 语言服务器协议

除必选的 :request-dispatcher:notification-dispatcher 初始化参数外, jsonrpc-process-connection 类的使用者应向 make-instance 传入以下关键字-值对形式的初始化参数:

:process

值必须为一个活跃的进程对象,或一个无参且返回该类对象的函数。 若传入进程对象,则该对象应已建立好连接; 否则,该函数会在对象创建后立即调用。

:on-shutdown

值必须为一个单参数函数,参数为 jsonrpc-process-connection 对象。 该函数会在底层进程对象被删除后调用 (无论是由 jsonrpc-shutdown 主动删除,还是因外部原因意外删除)。