Поддерживает ли Wokkel (библиотека XMPP) следующие функции?
Я хочу разработать протокол XMPP для реализации связи RPC со следующими функциями. 1. Аутентификация безопасности между клиентом и сервером.
2. Поддержка нулевых значений (отправка нулевых значений на сервер)
3. Может ли отправлять произвольные значения (XML-RPC поддерживает только 32 бита)
4. Можно отправлять аргументы метода по своему усмотрению.(Например, для суммы (по умолчанию,4, по умолчанию) значения по умолчанию будут выбраны сервером)
5. возврат ошибки, если, который должен быть произвольным объектом
Я хотел бы знать, поддерживают ли библиотеки Wokkel все эти функции или вы знаете какие-либо другие библиотеки, которые поддерживают эти функции (например, SleekXMPP или XMPPPY)
1 ответ
Этот вопрос, кажется, состоит из двух частей:
1) Существует ли существующий протокол расширения XMPP, который поддерживает перечисленные функции?
2) Поддерживает ли это Wokkel (или, возможно, другие библиотеки Python XMPP)?
Единственными протоколами расширения XMPP для общего поведения RPC являются XEP-0009 (Jabber-RPC) и XEP-0050 (команды).
XEP-0009 использует полезные нагрузки XML-RPC, отправленные через XMPP. Но, как вы упоминаете, XML-RPC не подходит для вашего случая использования.
XEP-0050 использует формы данных XEP-0004 для выполнения предопределенного обмена командами с сервером. Я не думаю, что это соответствует вашим требованиям № 2, № 3 или № 4, к сожалению.
В настоящее время Wokkel не поддерживает ни то, ни другое, но оба могут быть относительно легко реализованы поверх существующего кода.
Для полноты, ваше требование № 1 (Безопасная аутентификация между клиентом и сервером) должно быть удовлетворено только при использовании XMPP в качестве транспорта, независимо от фактического (под) протокола RPC. Возможно, вам также потребуется некоторая аутентификация, но обычно это зависит от конкретного приложения.
Требование № 5 кажется неполным в своей формулировке, но XMPP поддерживает специфичные для приложения условия ошибок для разделов ошибок. XEP-0060 (Publish-Subscribe) широко использует это. Например, в ошибке Payload Too Big.
В Wokkel есть поддержка специфичных для приложения ошибок.