реализация службы GAE XMPP в качестве внешнего компонента для существующего сервера XMPP (например, ejabberd или OpenFire)
-
10-07-2019 - |
Вопрос
Могу ли я узнать, какую технику интеграции вы используете для реализации внешнего компонента на существующем сервере XMPP (например, ejabberd или OpenFire). Это происходит через отправку сообщения xmpp другому пользователю @ externaldomain напрямую или с помощью механизма вроде urlfetch?
Решение
Механизм приложений Google (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
}
}
Помните, что JID могут быть просто yourappid@appspot.com ИЛИ foo@yourappid.appspotchat.com потому что домены Google еще не поддерживаются.
Например, вы можете создать игрушечное приложение Gae с простой страницей:
<Ол>Чтобы проверить ваше приложение:
<Ол>Если ваш личный XMPP-сервер (openfire) запущен и работает, просто пропустите шаг 1 и используйте свою учетную запись домена для получения сообщения от вашего модного приложения Gae.
Ознакомьтесь с доставкой сообщений в XMPP , чтобы понять, как это работает.
Другие советы
App Engine поддерживает очень ограниченное подмножество XMPP. По сути, вы можете отправлять сообщения (через API) и получать сообщения (они поступают как HTTP-запросы).
Вы можете подключить внешний компонент на вашем существующем сервере XMPP, чтобы отправлять и получать сообщения с кодом вашего механизма приложений. Этот компонент должен отслеживать все, что вы хотите отправить и получить из своего приложения.