皆さんが既存のXMPPサーバー(ejabberdやOpenFireなど)に外部コンポーネントを実装するために使用している統合手法を知っているかもしれません。xmppメッセージを別のuser@externaldomainに直接送信するか、urlfetchなどのメカニズムを使用するか。
2 に答える
Google App Engine(Gae)は、 CLIENTと同じように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
}
}
Googleドメインはまだサポートされていないため、 JIDはyourappid@appspot.comまたはfoo@yourappid.appspotchat.comになります。
たとえば、次のような単純なページでおもちゃのGaeアプリケーションを作成できます。
- テキストを送信するためのhtmlフォーム
- 受信して大きなテーブルに保存されたメッセージのリストを表示するhtmlテーブル。
アプリケーションをテストするには:
- jabber.orgでアカウントを作成します
- Smackをダウンロード
- Smackからyourappid@appspot.comにメッセージを送信してみてください
- GaeAppからyouraccount@jabber.orgにメッセージを送信してみてください
パーソナルXMPPサーバー(openfire)を稼働させている場合は、手順1をスキップし、ドメインアカウントを使用して、ファンシーなGaeアプリからメッセージを受信します。
これがどのように機能するかを理解するには、XMPPメッセージ配信を参照してください。
App Engineは、XMPPの非常に限られたサブセットをサポートします。基本的に、(APIを介して)メッセージを送信でき、メッセージを受信できます(HTTP要求として受信されます)。
既存のXMPPサーバーに外部コンポーネントを設定して、アプリエンジンコードでメッセージを送受信できます。そのコンポーネントは、アプリとの間で送受信したいものを追跡する必要があります。