3

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

4

2 回答 2

6

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

使用 XMPP Gae JAVA 客户端功能,您可以:

发信息

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消息传递以了解其工作原理。

于 2010-04-02T09:13:13.653 回答
1

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

Java API
Python API

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

于 2009-10-31T17:14:41.207 回答