gpt4 book ai didi

java - 在 java 中从 xmpp 服务器 vysper 发送消息

转载 作者:行者123 更新时间:2023-11-30 06:26:33 26 4
gpt4 key购买 nike

我已经设置了简单的服务器和客户端,但我不知道如何从 xmpp 服务器向客户端发送消息。请给我一些帮助。如果可能,请给我一些链接。

最佳答案

这个问题出人意料地经常出现在 Vysper 身上。提出这个问题有几个原因,我认为一个特别的原因是 HTTP Web 服务器实际上以创建内容(HTML、CSS 等)并将内容(HTML、CSS 等)发送到代理 a.k.a. Web 浏览器的方式工作。

在电子邮件和聊天等基于消息的协议(protocol)中,这有点不同。

电子邮件由代理(即电子邮件客户端)创建和使用。服务器大多只充当消息代理 (http://en.wikipedia.org/wiki/Message_broker),包括身份验证、过滤、存储等方面。他们很少自己生成自己的电子邮件消息。通常,一些中央帐户(例如 order@acme.com、support@acme.com)创建大部分电子邮件,这意味着实际消息由电子邮件客户端生成并由服务器代表客户端传送。 (此外,电子邮件/SMTP 具有客户直接将电子邮件发送到收件人 电子邮件服务器的特殊性,这是一个名为/spam/的噩梦。)

一般来说,XMPP在这里没什么区别。 XMPP 聊天客户端连接并发送和接收消息。 XMPP 服务器代理消息。因此,为了回答您的问题,在大多数情况下,有一个中央帐户与所有其他帐户进行通信就足够了,并且建议这样做。这是最简单、最好的解决方案。

但是,XMPP 提供的不仅仅是聊天功能。它具有基于表单、发布/订阅和管理/命令的类似 wizzard 工作流的扩展。

如果确实需要,您可以添加自己的扩展:

例如,看看这里的 VCard 扩展:http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/

首先,我建议子类化 org.apache.vysper.xmpp.modules.core.base.handler.DefaultIQHandler 这就像通过子类化 DefaultServlet 来实现您自己的 Servlet。它包含您要提供的 XMPP 节逻辑。

此外,您需要将处理程序插入服务器。最好按照 VcardTempModule 中的示例来完成,其中

  1. 提供一个Handler实例并注册
  2. 初始化持久性(或您可能需要的任何其他后端连接)
  3. 让您的扩展的命名空间为人所知,并在服务发现中公布您的 IQ 内容

如果您需要持久性,请查看 VcardTempPersistenceManager。

剩下要做的就是让服务器知道您的模块。如果使用 Spring,则在 Spring 配置中添加一行。如果您使用嵌入式方法,则需要调用等效于 server.addModule(new VcardTempModule());就像在 org.apache.vysper.xmpp.server.ServerMain 中完成的一样

现在,如果您想要发出新的 Stanzas(消息)而不是对通过服务器的其他 Stanzas 的 react ,您还需要启动您自己的 Thread,它能够创建和发送 Stanzas。

但同样,首选方法是让客户端创建所有消息。

关于java - 在 java 中从 xmpp 服务器 vysper 发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14151333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com