【问题标题】:implementing GAE XMPP service as an external component to an existing XMPP server (e.g. ejabberd or OpenFire)将 GAE XMPP 服务实现为现有 XMPP 服务器(例如 ejabberd 或 OpenFire)的外部组件
【发布时间】:2010-12-11 03:33:19
【问题描述】:

我想知道你们使用什么集成技术来实现现有 XMPP 服务器的外部组件(例如 ejabberd 或 OpenFire)。是通过直接向另一个user@externaldomain发送xmpp消息还是使用urlfetch之类的机制?

【问题讨论】:

  • '实现外部组件'?你想达到什么目的?
  • gae 不能使用 xmpp,所以我想安装外部 openfire 并使用 pubsub 。我的 smack pubsub 客户端也将安装在外部服务器上

标签: java google-app-engine xmpp openfire


【解决方案1】:

Google 应用引擎 (Gae) 确实像 CLIENT 一样支持 XMPP。

使用 XMPP Gae JAVA client 功能,您可以:

发送消息

JID jid = new JID("youraccount@jabber.org");
Message msg = new MessageBuilder()
    .withRecipientJids(jid)
    .withBody("Hello i'm a fancy GAE app, how are you?")
    .build();                    
XMPPService xmpp = XMPPServiceFactory.getXMPPService();
if (xmpp.getPresence(jid).isAvailable()) {
   SendResponse status = xmpp.sendMessage(msg);               
}

接收消息

public class XMPPReceiverServlet extends HttpServlet {
  public void doPost(HttpServletRequest req, HttpServletResponse res)
          throws IOException {
    XMPPService xmpp = XMPPServiceFactory.getXMPPService();
    Message message = xmpp.parseMessage(req);    
    JID fromJid = message.getFromJid();
    String body = message.getBody();
    //Save to Big Table
  }
}

请记住,JID 可以是 yourappid@appspot.comfoo@yourappid.appspotchat.com 因为尚不支持 Google 域。

例如,您可以制作一个带有简单页面的玩具 Gae 应用程序:

  1. 发送文本的 html 表单
  2. 一个 html 表格,显示接收到的消息列表并存储到大表格中。

测试您的应用程序:

  1. 在 jabber.org 上创建一个帐户
  2. 下载 Smack
  3. 尝试从 Smack 向 yourappid@appspot.com 发送消息
  4. 尝试从 Gae App 向 youraccount@jabber.org 发送消息

如果您的个人 XMPP 服务器 (openfire) 已启动并运行,只需跳过第 1 步并使用您的域帐户接收来自您喜欢的 Gae 应用程序的消息。

查看 XMPP message delivery 以了解其工作原理。

【讨论】:

【解决方案2】:

App Engine 支持的 XMPP 子集非常有限。基本上,您可以发送消息(通过 API),也可以接收消息(它们以 HTTP 请求的形式出现)。

Java API
Python API

您可以在现有 XMPP 服务器上安装一个外部组件,以使用您的应用引擎代码发送和接收消息。该组件必须跟踪您想从应用发送和接收的任何内容。

【讨论】:

  • 关于如何将外部 xmpp 与 gae 一起使用的任何文章/参考资料?
  • 你不需要做任何特别的事情来与 XMPP 中的组件通信。您只需像以前一样使用 jid 发送/接收消息。请注意,这就是 GAE XMPP 可以做的所有事情。您的精美组件必须在您运行的另一台服务器上。
猜你喜欢
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 2015-11-05
  • 2014-06-05
  • 2013-09-22
  • 2013-10-07
相关资源
最近更新 更多