从远程过程返回一个数组

时间:2016-04-08 15:01:21

标签: wamp rpc autobahn crossbar autobahnws

我使用Thruway客户端注册RCP过程并使用Autohahn客户端调用它。

我遇到的问题是当被调用者从过程return array();返回一个空数组时,调用者会收到null值。

当被调用者返回单元素数组return array(['foo' => 'bar', 'baz' => 'quux']);时,调用者会接收到未包含在数组中的对象。

只返回数组中的多个对象按预期工作:调用者接收一个对象数组。

这绝对不方便且不直观:我必须检查响应是否已定义,是否为数组...我希望调用者接收我实际从被调用者发送的内容:空数组,一个元素的数组和多个元素的数组。我发送一个数组 - 我希望客户端得到一个数组。

问题是:如何解决这个问题?我甚至不确定这两个客户端中哪一个配置错误。或者这可以在路由器上配置(我使用Crossbar作为路由器)。或者这可能是协议的预期实现(这将是非常糟糕的)。

1 个答案:

答案 0 :(得分:1)

刚刚与两个Autobahn客户(Autobahn | JS,但在这方面的行为在Autobahns中的行为相同)和Crossbar.io进行了测试。这会产生一个空数组,一个包含一个元素的数组和一个包含多个元素的数组。

这是符合规范的行为:调用者接收来自被调用者的内容。路由器对有效负载执行的唯一修改是在需要时更改序列化。