将GAE XMPP服务作为现有XMPP服务器(例如ejabberd或OpenFire)的外部组件实现

3

请问您们使用什么集成技术来将外部组件实现到现有的XMPP服务器(例如ejabberd或OpenFire)中?是直接通过向另一个user@externaldomain发送XMPP消息,还是使用像urlfetch这样的机制?


实现外部组件?你想要达到什么目的? - Nick Johnson
GAE无法使用XMPP,所以我考虑安装外部Openfire并使用PubSub。我的Smack PubSub客户端也将安装在外部服务器上。 - cometta
2个回答

6

谷歌应用引擎(Gae)支持XMPP,就像客户端一样。

通过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
  }
}

请记住,JIDs可以是 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 消息传递,以了解其工作原理。


@systempuntoout,您能否对此帖子发表评论:https://dev59.com/YkzSa4cB1Zd3GeqPrPYJ - cometta

1

App Engine支持非常有限的XMPP子集。基本上,您可以通过API发送消息,并且可以接收消息(它们作为HTTP请求传入)。

Java API
Python API

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


有没有关于如何在 GAE 中使用外部 XMPP 的文章或参考资料? - cometta
你不需要做任何特殊的事情来与XMPP组件通信。你只需像以前一样使用jid发送/接收消息即可。请注意,这就是GAE XMPP所能做的全部。你的高级组件必须在你运行的另一个服务器上。 - Adam Goode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接