【问题标题】:XMPP / Jabber: For custom messages I need to modify the client or the server?XMPP / Jabber:对于自定义消息我需要修改客户端还是服务器?
【发布时间】:2013-03-15 08:46:04
【问题描述】:

我正在编写一个 IM,我想实现一些标准中没有的功能,我想要一些自定义功能。
我想知道例如我是否可以使用 Google 的 XMPP 服务(Google Talk)并制作一个自定义 IM 客户端,它实现了能够与服务器对话的默认功能,并且可能有一种方法可以在 XML 中添加一些自定义标签,Google 的服务器将使用这些标签并将消息发送到我的其他可以解释此 XML 的客户端并展示并做正确的事情?

还是我必须在服务器上实现此功能?例如,Openfire 支持插件,您可以使用插件对其进行扩展,但我更愿意避免制作自己的服务器,而是使用 Google 帐户和服务器。我只是一名学生,没有资源自己维护服务器。

另外,我不太明白“Jabber Component Protocol”的用途。根据我的阅读,我知道它可以解决我的问题,但它必须在服务器上。它不在 XMPP 服务器中,但它也必须作为服务器工作并与 XMPP 服务器连接。
我认为我不能将“Jabber Component Protocol”与 Google 的 XMPP 服务器一起使用,或者我可以吗?

【问题讨论】:

    标签: xmpp openfire google-talk


    【解决方案1】:

    如果我正确理解您的问题,那么您只想向您的消息中添加一些额外的有效负载,这些有效负载只能由接收客户端解释。因此,您只需要 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 标记?
    • 我从这个问题stackoverflow.com/questions/12475122/… 中了解到,您可以在 中添加自定义标签,对吧?
    • 使用你自己的命名空间,你很好。类似于: mycompany.com/mynamespace">
    • Alex,请将此添加到答案中。
    • 你真的可以像你的例子(urn:xmpp:mynamespace:v1)那样创建新的xmpp URN吗?名称冲突怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2012-04-09
    • 2019-10-13
    • 1970-01-01
    • 2019-09-16
    相关资源
    最近更新 更多