XMPP应用程序需要过滤其他客户端,例如Pidgin out

XMPP应用程序需要过滤其他客户端,例如Pidgin out,xmpp,Xmpp,我们开发了一个应用程序,该应用程序应该只支持使用该应用程序的对等方之间的交互。我们希望区分通过我们的应用程序登录的用户和普通聊天客户端(如Pidgin)登录的用户 有一个观察结果:如果我们的应用程序和Pidgin都有相同的用户名登录,应用程序会不时地释放节,因为它们只会传递给Pidgin,反之亦然 我已经开始考虑通过检查特定于应用程序的后缀来跟踪我们应用程序用户的特定jid,例如。MyName@OurServer/我们的应用(我们的应用就是那个后缀)。但是,如果相同的用户名同时登录到我们的应用程

我们开发了一个应用程序,该应用程序应该只支持使用该应用程序的对等方之间的交互。我们希望区分通过我们的应用程序登录的用户和普通聊天客户端(如Pidgin)登录的用户

有一个观察结果:如果我们的应用程序和Pidgin都有相同的用户名登录,应用程序会不时地释放节,因为它们只会传递给Pidgin,反之亦然


我已经开始考虑通过检查特定于应用程序的后缀来跟踪我们应用程序用户的特定jid,例如。MyName@OurServer/我们的应用(我们的应用就是那个后缀)。但是,如果相同的用户名同时登录到我们的应用程序和Pidgin,我们如何让服务器只向我们的客户端发送节呢?

确保发送到完整的JID,而不仅仅是基本JID

Full JID: MyName@OurServer/OurApp
Base JID: MyName@OurServer

第二个版本可能有两种不同的结果,这取决于服务器及其配置。使用完整JID将只发送到该客户端连接。

确保发送到完整JID,而不仅仅是基本JID

Full JID: MyName@OurServer/OurApp
Base JID: MyName@OurServer
第二个版本可能有两种不同的结果,这取决于服务器及其配置。使用完整JID将只发送到该客户端连接。

在XMPP中,“后缀”称为资源。您可以将XMPP数据包发送到裸JID(user@domian.com)或一个完整的JID(user@domain.com/资源)。您可以轻松地使用资源来识别您的客户机,还可以使用服务发现检查客户机软件,请参阅。

在XMPP中,“后缀”称为资源。您可以将XMPP数据包发送到裸JID(user@domian.com)或一个完整的JID(user@domain.com/资源)。您可以轻松地使用资源来识别您的客户端,也可以通过服务发现检查客户端软件,请参阅。

资源标识符(您称之为“后缀”)不是检测应用程序的可靠方法。服务器可以将其更改为任何它喜欢的内容。此外,尽管在实践中不太可能,但用户可能会在其客户机中输入此资源字符串,从而造成麻烦

识别客户机类型的正确方法是通过其存在。标准的方法是使用和。您的客户机将在其服务发现结果中包含特定的标识功能

一旦确定了客户的完整JID,请始终使用它与客户沟通。对请求/响应使用
节,或使用带有自定义负载的
节(无
)。

资源标识符(您称之为“后缀”)不是检测应用程序的可靠方法。服务器可以将其更改为任何它喜欢的内容。此外,尽管在实践中不太可能,但用户可能会在其客户机中输入此资源字符串,从而造成麻烦

识别客户机类型的正确方法是通过其存在。标准的方法是使用和。您的客户机将在其服务发现结果中包含特定的标识功能


一旦确定了客户的完整JID,请始终使用它与客户沟通。请使用
小节作为请求/响应,或者使用带有自定义负载的
小节(无
)。

谢谢,这很有效。我们遇到了一个问题,即不总是将资源附加到“to”字段。通过强制执行规则来处理,没有附加资源就不会发送任何节。谢谢,这很有效。我们遇到了一个问题,即不总是将资源附加到“to”字段。通过强制执行规则进行处理,如果没有附加资源,则不会发送任何节。