我目前正在尝试通过 XMPP 实现 XML RPC。我使用 Smack 作为客户端库,使用 Vysper 作为 XMPP 服务器。简化后,我的设置如下所示:
[client1] — [server] — [client2]
我想从客户端 1 调用客户端 2 上的一个方法。我创建了一个具有类型集的 IQ,以及 [1] 中所述的 from 和 to 元素以及查询内容。简化示例:
<iq type='set' from='client1@localhost' to='client2@localhost' id='1'>
<query xmlns='jabber:iq:rpc'>
<methodCall>
<methodName>foo</methodName>
</methodCall>
</query>
</iq>
问题是,当从 client1 发送 IQ 时,我收到一个错误 IQ,并且没有任何内容提交给 client2。调查问题时,我在规范 [2] 中发现了以下声明:
服务器必须忽略名册“集”上的任何“收件人”地址,并且必须将任何名册“集”视为适用于发送者。[…]
我是否正确,在这个星座中,两个客户端之间不可能有 Jabber-RPC?还是我对 Jabber-RPC 有根本的误解?