XMPP/Jabber:对于定制消息,我需要修改客户端还是服务器?

5

我正在编写IM,并想实现一些标准中没有的功能,我需要一些自定义功能。我想知道是否可以使用Google的XMPP服务(Google Talk),制作一个自定义IM客户端来实现默认功能以便与服务器通信,也许有一种方法可以在XML中添加一些自定义标签,Google的服务器将处理并将消息发送给我的其他客户端,该客户端可以解析此XML并显示和执行正确的操作?

或者我必须在服务器上实现这些功能?例如,Openfire支持插件,您可以使用插件扩展它,但我真的很想避免制作自己的服务器,而是使用Google账户和服务器。我只是一名学生,没有资源来维护自己的服务器。

另外,我真的不理解“Jabber Component Protocol”是用来做什么的。从我所了解的来看,我理解它可以解决我的问题,但它必须在服务器上运行。它不在XMPP服务器中,但它也必须作为服务器工作并连接到XMPP服务器。
我不认为我能在Google的XMPP服务器上使用“Jabber Component Protocol”,或者我能吗?
1个回答

5
如果我正确理解了您的问题,那么您只想在消息中添加一些额外的有效载荷,这些有效载荷必须仅由接收客户端进行解释。因此,您仅需要将XMPP服务器作为从客户端A到客户端B的路由器。这将与Google Talk服务器以及任何其他服务器配合使用。此种可扩展性是XMPP的基本功能之一。
Openfire插件和组件协议用于其他用例。
下面是一个示例,说明如何添加自定义有效载荷:
所以类似于:
<message to="user@server.com">
   <mytag xmlns="mycompany.com/mynamespace"/>
</message> 

或者

<message to="user@server.com">
   <mytag xmlns="urn:xmpp:mynamespace:v1"/>
</message>

"XMPP的可扩展性是其基本特征之一。我是否需要使用特定的XML标签,以便服务器不会认为我的消息已损坏,还是可以随意使用XML标签?" - Lilian A. Moraru
我从这个问题的描述中理解到,您可以在 <message></message> 标签内添加自定义标签,是这样吗? - Lilian A. Moraru
使用自己的命名空间就可以了,像这样:<message to="user@server.com"> <mytag xmlns="http://mycompany.com/mynamespace"/> </message> 或者<message to="user@server.com"> <mytag xmlns="urn:xmpp:mynamespace:v1"/> </message> - Alex
Alex,请将此添加到答案中。 - Lilian A. Moraru
你真的可以像你的例子中那样铸造新的 xmpp URN 吗 (urn:xmpp:mynamespace:v1)?那么命名冲突怎么办? - unor
是的,你是对的。为了防止冲突,你可以像我在示例中所做的那样,在命名空间中放置你的公司名称或URL。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接