2009-04-26 141 views
1

我目前正在研究構建基於Java的桌面應用程序與網站進行交互的項目。我們希望整合IM功能,所以我們決定使用XMPP。XMPP客戶端不兼容

問題是我們的應用程序具有其他功能,任何使用其他客戶端連接到我們的XMPP服務器的人都會導致我們的網站出現問題(例如,我們的客戶端將能夠發送帶有用戶獲得的某種消息類型的消息無法使用,但與另一個客戶端,他們可以發送這些消息類型)。

是否有人只允許我們的客戶端訪問XMPP服務器或阻止其他客戶端使用某些功能?我知道這與開放標準的想法背道而馳,但我們不想從頭開始構建專有的IM解決方案。

+0

請澄清:「我們的客戶端將能夠發送消息給用戶不能使用的特定消息類型,但是與另一個客戶端他們可以發送這些消息類型。」你的意思是你的服務器不能處理標準客戶端,或者你的客戶端不能使用標準服務器?我在猜測前者,但如果是這樣的話,這並不明顯。*爲什麼互操作性會成爲問題。 – 2009-04-27 00:28:31

+0

本質上,我們希望能夠使用XMPP發送來自我們應用程序的一個不同功能的某種狀態消息(與正常的IM狀態更改不同)(例如,它監視某些內容,然後在其發送時發送狀態消息關閉)。我們的客戶端將能夠使用與標準聊天類型不同的消息類型發送和接收這些消息,但另一客戶端則不會。 我們沒有問題,這是專有的,但XMPP功能是非常好的,我寧願使用類似Smack API和運行XMPP服務器比做我自己的所有。 – 2009-04-27 00:37:23

回答

1

建立一個專有的解決方案,它可能不完全是從零開始,這並不一定是壞事。但是,除非您要支持XMPP客戶端,否則請不要將其稱爲XMPP服務。您將得到與需要您專有瀏覽器的「網站」相同的反應。

對於可以協商的功能,請看Feature Negotiation,您可能會說服您的服務器沒有其他客戶端的特定功能,但可以祕密支持您的服務器。這實際上不會阻止某些東西被嘗試,所以這是相當糟糕的解決方案。

無需構建桌面應用程序即可獲得即時消息傳遞功能(伴隨所有平臺支持問題)。考慮Orbited,它可以爲您提供即時消息交互功能,讓您更容易集成到服務器上。

而且,正如一個側面來看,不應該有引起問題,您的網站的任何消息,任何超過有可能是導致其問題的URL,或查詢組合等

0

不確定您的所有要求,但聽起來您可能可以使用XMPP的pubsub或pep功能。這些是XMPP的擴展,允許您創建可以在用戶級別訪問的專用有效負載(個人事件協議XEP-0163)。如果它只是一個通知所有感興趣的人,那麼PubSub(XEP-0060)可能就是你想要的。

這些協議允許保護對pubsub節點的訪問,並且不會受到標準聊天消息的影響,因爲它們是不同的協議。