繁体   English   中英

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

[英]sending message from xmpp server vysper in java

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

这是Vysper经常令人惊讶的问题。 甚至有几个原因可以提出这个问题,我认为一个特定的原因是HTTP Web服务器实际上以一种方式创建并发送内容(HTML,CSS等)并将其发送到代理(即Web浏览器)。

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

电子邮件是由代理(也称为电子邮件客户端)创建和使用的。 服务器大多只充当消息代理(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/扩展/ 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中完成的一样

现在,如果您要发出新的节(消息)而不对通过服务器的其他节作出反应,则还需要启动自己的线程,该线程能够创建和发送节。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM