0

我使用 Thruway 客户端注册了一个 RCP 程序,并使用 Autohahn 客户端调用它。

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

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

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

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

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

4

1 回答 1

1

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

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

于 2016-04-10T09:49:31.240 回答