我想开发一个XMPP协议来实现具有以下功能的RPC通信。 1.客户端和服务器之间的安全认证。
2.Support Null值(向服务器发送空值)
3.可以发送任意值(XML-RPC仅支持32位)
4.可以通过自定义发送方法参数。(例如,sum(默认值,4,默认值),默认值将由服务器选择)
5.返回错误,如果,应该是任意对象
我想知道Wokkel库是否支持所有这些功能,或者您是否知道任何其他支持这些功能的库。(例如:SleekXMPP或XMPPPY)
答案 0 :(得分:1)
这个问题似乎有两个部分:
1)是否存在支持所列功能的现有XMPP扩展协议?
2)Wokkel(或可能是其他Python XMPP库)是否支持此功能?
通用RPC行为的唯一XMPP扩展协议是XEP-0009 (Jabber-RPC)和XEP-0050 (Commands)。
XEP-0009使用通过XMPP发送的XML-RPC有效负载。但正如您所提到的,XML-RPC不适合您的用例。
XEP-0050使用XEP-0004数据表单与服务器执行预定义的命令交换。不幸的是,我认为它不符合你的要求#2,#3或#4。
Wokkel目前既不支持,也可以在现有代码之上相对容易地实现。
为了完整性,只需使用XMPP作为传输即可满足您的要求#1(客户端和服务器之间的安全身份验证),无论实际的RPC(子)协议如何。可能你还需要一些身份验证,但这通常是特定于应用程序的。
要求#5的措辞似乎不完整,但XMPP支持error stanzas的特定于应用程序的错误条件。 XEP-0060(发布 - 订阅)广泛使用它。例如,在Payload Too Big error。
中Wokkel确实支持特定于应用程序的错误条件。