我有一個XMPP應用程序,其中兩個客戶端交互(1)用Smack(Scala/Java)編程的bot和(2)在strophe(Javascript)中編程的GUI聊天客戶端。在XMPP中交換自定義XML元素的最佳方式?
應用程式需要更換自定義XML(例如,如下圖所示)
<myPacket>
<response type='sensorData'>
<temperature units='Kelvin'>
234
</temperature>
</response>
</myPacket>
什麼是交換數據的最佳方式?以下是我能想出:
1)編寫自定義XMPP節
2)嵌入我的XML在當前定義的節(例如,在消息或IQ)
3)嫌, use the Message.get(set)Property
to read/write custom data。
No. 3)被排除,因爲它要求兩個客戶端都理解Java對象並使用相同的庫(Smack)。
請指點我解決同一問題的任何其他問題。
[編輯:]在做了一些研究後,我發現Dataforms(XEP-0004)是最簡單的方法,只要你的庫支持它。
使用您自己的名稱空間在各個XMPP節中使用 子元素,從客戶端發送自定義xml數據。例如。 ... 。這樣的節將反過來被你的客戶端機器人接收而沒有任何其他配置需求。 –
2010-11-19 07:05:24
感謝您的評論。我最終決定使用帶有數據表單的 子元素。 –
Jus12
2010-12-14 19:21:46
我發現數據表單(XEP-004)在smack中並不完全完整。最好使用自定義編碼(例如,消息節中的JSON)。這就是我們到處都在做的事情。 – Jus12 2012-09-20 00:50:10