【问题标题】:Returning an array from a remote procedure从远程过程返回一个数组
【发布时间】:2016-04-08 15:01:21
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: wamp rpc autobahn crossbar autobahnws


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的测试。我要测试两个 Thruway 客户端。
    猜你喜欢
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 2011-04-15
    相关资源
    最近更新 更多