有没有办法实现 XMPP 客户端或接收到的消息,可以接收来自 XMPP 服务器的所有消息?

Posted

技术标签:

【中文标题】有没有办法实现 XMPP 客户端或接收到的消息,可以接收来自 XMPP 服务器的所有消息?【英文标题】:Is there a way to implement an XMPP client or message reciever that can recieve all the messages from an XMPP server? 【发布时间】:2010-02-02 01:55:48 【问题描述】:

基本上,我正在尝试构建一个机器人,该机器人可以使用多个帐户之一向用户发送消息,并且能够将消息接收到它最初使用的进程并执行我需要它做的任何事情。到目前为止,我找到了 JAXL 库 (http://code.google.com/p/jaxl/),但根据示例,它一次只能处理一个用户。有什么建议或想法吗?

先谢谢你了。

顺便说一句,如果有任何办法让服务器自动将这些消息转发到另一个程序或任何同样有效的程序。

【问题讨论】:

【参考方案1】:

我认为您正在寻找外部组件.... Jaxl v 2.0 确实允许您使用 php http://github.com/abhinavsingh/JAXL 编写组件机器人

【讨论】:

【参考方案2】:

我认为您要问的是:“我可以将服务器上所有‘传出’消息的副本发送到 XMPP 客户端吗?”这个问题的答案是“有点”。

您正在查看两个部分,服务器配置和客户端/组件配置。你可能不想要客户。因为它需要以特定用户身份登录。您正在描述一个组件,它是在 XMPP 服务器或附近运行的受信任应用程序,并充当服务器的一部分。

服务器配置部分取决于您使用的服务器。我知道 XCP 可以做这种事情,例如使用消息存档组件。使用 ma 您可以创建一个组件来将消息写入日志或数据库。您将制作一个类似的组件,用于获取街道地址的字符串并送出鲜花或其他东西——无论您需要采取什么行动。

我所做的最大假设是,您可以完全控制这里的服务器。如果你不这样做,那么答案是“不”。

【讨论】:

【参考方案3】:

我最近使用smack library 托管了数十个“Xmpp 机器人”。没有这样的限制,您只能作为单个用户连接。只是为每个机器人生成了一个线程,让他作为单独的 xmpp 用户连接到服务器(甚至在不同的服务器上)并完成它的工作。就我而言,机器人只是将测试消息发送到测试聊天室,但代理服务(正如我从您的问题中理解的那样)也是可能的。

线程甚至被设计为创建用户并在停止后将其删除。

【讨论】:

以上是关于有没有办法实现 XMPP 客户端或接收到的消息,可以接收来自 XMPP 服务器的所有消息?的主要内容,如果未能解决你的问题,请参考以下文章

XMPP 客户端接收服务器消息

将 AppEngine XMPP 用于客户端通知

XMPP 上的未读消息计数

如何使用聊天客户端未接收到的 slimXMPP 发送一些数据?

无法使用 Node.js + XMPP 接收上游 GCM 消息

XMPP 聊天发送/接收消息同步