问题标签 [json-rpc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
10473 浏览

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

我的 JSON-RPC 客户端(使用 dojo JSON-RPC 的浏览器)向myserver.com/12345(Python 2.5,SimpleJSONRPCServer)上的 JSON-RPC 服务器发出 JSON-RPC 请求 (dojo.callRemote )。

然后服务器收到一个带有标题“OPTIONS / HTTP/1.1”的HTTP请求,默认情况下它无法处理,所以我为这个请求编写了一个自定义处理程序。

来自浏览器的请求标头说:

我发送的响应如下所示:

但是在浏览器中我收到以下错误:

错误:无法加载http://myserver.com:12345状态:0

我确认可以从网络访问 JSON 服务。

现在的问题是,浏览器(比如 Firefox)希望听众说什么?或者问题可能出在其他地方?

0 投票
4 回答
4750 浏览

json - JSON-RPC 和 Json-rpc 服务发现规范

我将实现 JSON-RPC Web 服务。我需要这方面的规范。到目前为止,我只发现了一种可以称为真正规范的资源:

但是我已经看到像 Dojo 这样的 JavaScript 框架积极使用 JSON-RPC SMD

但它需要 JSON Schema 规范,但它会重定向到错误的 URL 作为参考。到目前为止,我发现了以下内容:

而且还是草稿...

任何人都可以指出一些实际的规格......至少官方更新的东西?因为看起来按原样实现 JSON-RPC 1.0 可能还不够,至少对于像 Dojo 这样的框架来说是这样。还是我错了?

问题:

  • JSON-RPC 1.0 规范的实现是否足以为大多数现代客户端提供 JSON-RPC 服务,以及有多少客户端(如果有的话)实际支持 JSON-RPC 1.0(SMD、Schema、2.0)以外的功能?

    因为看起来 JSON-RPC 1.0 只是一个有官方规范的(而不是草稿)

  • 如果我应该实施 SMD,或者建议有人可以指向官方的、最新的Json Schema服务映射描述规范,还是我找到的链接真的是“规范”?

  • JSON-RPC 2.0、SMD 和 JSON-Schema 草案是否足够稳定以实施它们?

注意:不建议现有的 JSON-RPC 服务实现。

有人吗?

编辑:有人使用 JSON-RPC 吗?

0 投票
1 回答
503 浏览

python - 以干净和分离的方式向简单的 RPC 服务器添加方法

我创建了一个简单的RPC服务器来执行我们团队常见的某些任务,但这些任务是从不同的网络调用的。服务器看起来像这样(为简洁起见,我不包括错误处理):

这很简单:服务器接收到客户端的 JSON RPC 请求,查找方法,并调用传递参数的方法。方法本身就是返回 JSON RPC 响应的方法。对于不太熟悉的人,JSON RPC大致如下所示:

我拥有的 RPC 服务器非常适合我当前的目的(您可以想象,我的任务非常简单)。但随着任务复杂性的增加,我将需要继续添加方法。

我不想打开主文件并添加另一个def method3(...),两周后添加def method4(...)等等;代码会增长太快,维护会越来越难。

所以,我的问题是:如何创建允许我将方法注册到 Server的架构。一个好处是每个方法都有一个单独的文件夹保存一个文件,以便可以轻松地共享和维护它们。这种“架构”还允许我将某些方法的维护推迟给其他人,无论他们对 Twisted 的理解如何。

我不在乎每次注册新方法时是否需要重新启动服务器,但如果我没有的话,一个明显的优点是:)。

谢谢。

0 投票
2 回答
466 浏览

php - 带 PHP 的 RPC - 与传输机制无关

对于最近的一个项目,我有一个 PHP 脚本作为基于 CLI 的守护程序运行。该守护进程将负责监视/控制独立的工作进程。

用户将定期通过 PHP Web 前端(CLI 守护进程和前端代码位于同一物理服务器上)发出管理工作人员的请求。前端将需要对守护进程进行方法调用。

我对如何处理这些“远程”方法调用感到困惑。我认为在标准 UNIX 或 TCP 套接字上使用诸如 JSON-RPC 之类的 RPC 协议将是可行的方法,但是 PHP 的 JSON-RPC、XML-RPC、SOAP 等的每个实现似乎都与HTTP。由于我不是通过网络进行通信,因此完全不需要 HTTP。

所以,两个问题:

  • 为什么大部分 PHP RPC 包都与 HTTP 耦合?
  • 如上所述处理方法调用的最佳方式是什么?
0 投票
1 回答
1242 浏览

json-rpc - 如何使用 JSON-RPC 处理面向对象的 API?

由于 JSON-RPC 是面向过程的,我在 C# 中有一个不会映射到 JSON-RPC 的 API。您将如何在 JSON-RPC 中表示面向对象的 API?
我当然可以使用 JSON-RPC 扩展,以便请求看起来像:

但这感觉有点骇人听闻,也需要大量工作来定义。我也可以将它作为参数包含在内,但它再次感觉不对劲。
是否有关于使用 JSON-RPC 处理面向对象 API 的最佳实践?

0 投票
3 回答
1218 浏览

javascript - 开发可维护的 RPC 系统

我正在开发一个 Web 应用程序,它将广泛使用 AJAX 技术进行客户端/服务器通信......特别是 JSON-RPC。Zend Framework 正在服务器端使用,它提供了一个不错的 JSON-RPC 服务器,我想使用它。

我的目标是构建一个可维护的系统,将服务器端功能的大部分子集暴露给客户端(javascript),而不需要不必要的代码重复。我看过许多关于如何使用 ZF 的 JSON-RPC 服务器的博客文章和教程(请参阅此处此处),但它们似乎都旨在公开一个小型的、可公开使用的 API。代码重复很常见,例如一篇博客文章公开了以下方法:

我不喜欢有两种setTitle方法的事实。如果一个方法签名发生变化,另一个必须保持同步......如果您的 API 很广泛,这似乎是可维护性的噩梦。在我看来,应该有一个Book类,一个setTitle方法。

@export我最初的想法是为我想要公开的方法/类添加一个 docblock 注释。当我决定公开该setTitle方法时,我只是添加注释而不是新方法。

我看到的一个潜在问题涉及对象持久性。在服务器端,设置对象的 title 属性是有意义setTitle的……但在调用之前不要将其保存在数据库update()中。在客户端,调用setTitle应该立即影响数据库。一种可能的解决方案是修改所有访问器,以便它们采用可选的第二个参数,表示修改应立即更新数据库:

某种代理类可以确保$persist为所有客户端 RPC 调用设置标志。

另一个问题是 PHP 对象的序列化。在服务器端,进行 OO 风格的$book->setTitle("foo")调用是有意义的,但由于缺少状态,客户端book.setTitle(1234, "foo")是有意义的(其中 1234 是书的 ID)。我对此的解决方案是让上述代理类负责以某种方式book.setTitle(1234, "foo")变成:

我觉得这个问题之前一定已经解决或讨论过......但我没有在网上找到很多资源。这看起来像一个理智的解决方案吗?

0 投票
1 回答
1906 浏览

python - 如何实现两种方式 jsonrpc + 扭曲的服务器/客户端

您好,我正在开发一个基于 twisted 的 rpc 服务器,以服务于多个微控制器,这些微控制器使 rpc 调用 twisted jsonrpc 服务器。但是应用程序还要求服务器随时向每个微发送信息,所以问题是如何防止来自微的远程 jsonrpc 调用的响应与为一个用户。

我现在得到的结果是 micros 收到了错误的信息,因为他们不知道来自套接字的 netstring/json 字符串是他们对先前要求的响应还是来自服务器的新请求。

这是我的代码:

0 投票
1 回答
2614 浏览

javascript - JSON-RPC - 如何制作一个唯一的 ID?

在调用 JSON-RPC 服务时,从 JavaScript 客户端生成唯一 ID 的最常见方法是什么?

修改后的问题:

通常,JavaScript JSON-RPC 客户端实现了一个计数id参数(例如,如果上一个请求是id=1,并且它没有收到响应,则下一个请求是id=2。如果请求id=1已经响应,则下一个请求可以id=1再次)。我有兴趣了解人们通常如何实现这一点。

0 投票
2 回答
4863 浏览

iphone - 如何从 json-rpc 网络服务获取数据:iPad /iPhone / Objective C

我正在开发一个 iPad 项目,这个项目需要与 json-rpc webservices 对话。网络服务基于 Drupal,带有模块:cck 和 views

1)我需要将一个json对象推送到webservice 2)我需要来自webservice的回调数据

我已经为 iPad 项目实现了 SBJSON api 和https://github.com/samuraisam/DeferredKit/ api。

SBJSON api 工作正常,我理解这个 Samuriaisam DeferedKit 对我来说是新的

我的问题是如何从这个 json-rpc 网络服务中获取数据,有人有一些示例代码吗?或者在某些地方我可以找到 Objective C - json-rpc webservice 文档。

亲切的问候,

巴特舍恩

- - - - -更新 - - - -

我现在使用这段代码:

这将导致来自服务器的此消息:

- - - - -/更新 - - - -

怎么了?有人有这方面的经验吗?

亲切的问候,

巴特舍恩

0 投票
2 回答
333 浏览

json-rpc - 在实现 JSONRPC 2.0 服务器时,是否需要同时支持命名参数和位置参数?

根据这里的规范:http ://groups.google.com/group/json-rpc/web/json-rpc-2-0

更具体地说,本节:

如果存在,则 rpc 调用的参数必须作为结构化值提供。通过数组按位置或通过对象按名称。

对我来说,两种样式都必须支持似乎很明显,但是我已经提交了错误报告,另一位开发人员认为由开发人员决定支持哪种方法,并且规范不需要两者。

除了我上面引用的内容外,我找不到官方答案,其他开发人员的解释方式与我不同。

那么,普遍的共识是什么?