既存のXMPPサーバー(ejabberdやOpenFireなど)の外部コンポーネントとしてGAE XMPPサービスを実装する
-
10-07-2019 - |
質問
外部コンポーネントを既存のXMPPサーバー(ejabberdやOpenFireなど)に実装するために皆さんが使用している統合技術を知っているかもしれません。 xmppメッセージを別のuser @ 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アプリケーションを作成できます。
- テキストを送信するHTMLフォーム
- 受信して大きなテーブルに保存されたメッセージのリストを表示するhtmlテーブル。
アプリケーションをテストするには:
- jabber.orgでアカウントを作成
- Smackをダウンロード
- Smackからyourappid@appspot.comにメッセージを送信してみてください
- Gaeアプリからyouraccount@jabber.orgにメッセージを送信してみてください
個人用のXMPPサーバー(openfire)が稼働している場合は、手順1をスキップして、ドメインアカウントを使用して派手なGaeアプリからメッセージを受信します。
XMPP メッセージ配信を見て、この仕組みを理解してください。
他のヒント
App Engineは、XMPPの非常に限られたサブセットをサポートしています。基本的に、(APIを介して)メッセージを送信でき、メッセージを受信できます(HTTPリクエストとして受信します)。
既存のXMPPサーバーに外部コンポーネントを作成して、アプリエンジンコードでメッセージを送受信できます。そのコンポーネントは、アプリから送受信したいものを追跡する必要があります。
所属していません StackOverflow