2009-04-26 120 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节点的访问,并且不会受到标准聊天消息的影响,因为它们是不同的协议。