在 JSON RPC 请求和响应之间实现通知

Posted

技术标签:

【中文标题】在 JSON RPC 请求和响应之间实现通知【英文标题】:Implementing notifications in between JSON RPC request and response 【发布时间】:2015-04-09 12:20:14 【问题描述】:

根据规范,JSON-RPC 允许 3 种不同的消息,即请求、响应和通知,其中为每个请求提供响应。

那么是否可以在响应和请求之间实现通知?

--> data sent to service
<-- data coming from service

--> "method": "startCalculation", "params": [2015], "id": 1 // asynchronous
<-- "method": "updateProgress", "params": ["10"], "id": null // 10% done
<-- "method": "updateProgress", "params": ["50"], "id": null // 50% done
<-- "method": "updateProgress", "params": ["100"], "id": null // 100% done
<-- "result": 123456, "error": null, "id": 1 // result of startCalculation

如果可能的话,我可以使用哪些可用的模式或模型在 .Net 4.0 中实现这一点?

【问题讨论】:

根据规范,“通知是没有“id”成员的请求对象。作为通知的请求对象表示客户端对相应的响应对象缺乏兴趣,因此没有需要将响应对象返回给客户端。”所以在你的例子中,你的通知走错了路。似乎通知是从客户端到服务器的。 【参考方案1】:

这将脱离规范。

响应表示为单个 JSON 对象

来源:http://www.jsonrpc.org/specification#response_object

【讨论】:

以上是关于在 JSON RPC 请求和响应之间实现通知的主要内容,如果未能解决你的问题,请参考以下文章

在 JSON-RPC 连接上读取多个 JSON 对象

laravel 怎么响应阿里云短信异步通知接口?

在 Rails 控制器中,即使使用 json 响应也设置通知

对长时间运行的通知通道使用 ServerStreaming rpc 调用

如何响应 JSON-RPC 服务器上的 HTTP OPTIONS 请求

GCM 未在通知中使用来自 JSON 有效负载的数据