Googleはこのセクションを英語のみで提供していますが、このサービスについて知り合いを共有しています。
XMPPサービスにより、GAEアプリケーションはギルメッセージを送受信できます。
XMPPは、Jabberとも呼ばれるXMLベースのオープンソースインスタントメッセージングプロトコルです。 Googleトークで既に使用されていること。
APIは、プロトコルを操作するメカニズム全体を隠します。 開発者は非常に高度なメソッドを取得するため、開発が簡素化されますが、同時に可能性が大幅に制限されます。
XMPP APIを使用して
javadokを見ると、最も必要な最小値のみが実装されていることがわかります。
メッセージを送る
プロトコルに関するすべての作業は、必要なすべてのメソッドを含む
com.google.appengine.api.xmpp.XMPPServiceオブジェクトのインスタンスを介して実行されます。 メッセージ送信の例:
import com.google.appengine.api.xmpp.JID; import com.google.appengine.api.xmpp.Message; import com.google.appengine.api.xmpp.MessageBuilder; import com.google.appengine.api.xmpp.SendResponse; import com.google.appengine.api.xmpp.XMPPService; import com.google.appengine.api.xmpp.XMPPServiceFactory;
アドレスはアプリケーションで利用可能です
-JID :
app-id@appspot.com (デフォルト)および
anything@app-id.appspotchat.com アプリケーションのバージョンがデフォルトになっていない場合は、それが使用されます(強制!)-
anything@version.latest.app-id.appspotchat.com 。 これまでのところ、サービスは、JIDでアプリケーションに使用されるドメイン名を許可していません。
宛先は任意の有効なJIDにすることができます(必ずしもGoogleトークユーザーである必要はありません)。
メッセージを交換するには、アプリケーションと受信者が相互に認証される必要があります-メッセンジャーのように招待を交換します。 アプリケーションに招待状を送信すると、サービスは自動的にそれを受け入れ、応答招待状を送信します。 または、アプリケーションから招待状を送信します。
xmpp.sendInvitation(jid);
残念ながら、JIDが許可されているかどうかを確認する方法はありません。 ステータスを確認することしかできません。その後、大きな制限があります。
xmpp.getPresence(fromJid).isAvailable();
結果は、あなたがオンラインで話している人がGoogleトークを使用し、許可されている場合にのみ肯定的です。 追加のステータスを定義することはできません。
連絡先リストを操作する方法はありません。 また、連絡先リストを手動で編集するために、アプリケーションアカウントで通常のjabberクライアントとしてログインする方法はありません。
メッセージを受け入れる
メッセージを受信するには、
appengine-web.xmlアプリケーション構成ファイルに次の行を追加して、サービスを「有効化」する必要があります。
<inbound-services> <service>xmpp_message</service> </inbound-services>
現在、アプリケーションに属するアドレスの1つでメッセージが受信されると、GAEはURL
/ _ah / xmpp / message / chat /に対してPOST要求を実行します。 要求には、メッセージ自体、送信者と受信者(送信先アドレス)のJID、およびスタンザ(XML形式のXMPPメッセージの完全な形式)が含まれます。
GAEは、URL
/ _ah / xmpp /メッセージ/チャット/へのアクセスを管理者ロールを持つユーザーにのみ提供するため、外部からは利用できません。
サーブレット自体を記述することは残っています。
import java.io.IOException; import javax.servlet.http.*; import com.google.appengine.api.xmpp.JID; import com.google.appengine.api.xmpp.Message; import com.google.appengine.api.xmpp.XMPPService; import com.google.appengine.api.xmpp.XMPPServiceFactory; @SuppressWarnings("serial") 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();
ご覧のとおり、APIにはそのようなリクエストを処理するための既製のパーサーが既にあります。
サーブレットを次のURL(
web.xml )にマップするだけです。
<web-app> … <servlet> <servlet-name>xmppreceiver</servlet-name> <servlet-class>XMPPReceiverServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>xmppreceiver</servlet-name> <url-pattern>/_ah/xmpp/message/chat/</url-pattern> </servlet-mapping> … <web-app>
XMPPサービスには、送信されたメッセージの数、送信されたメッセージの量、およびサービス自体へのAPI呼び出しの数に対するクォータがあります。 着信メッセージは、着信HTTP要求のように課金されます。
割り当て
結論として
実際、XMPPサービスを使用して、特にモバイルデバイスでさまざまな管理者通知を送信できます。 悪意のあるクォータの消費に対する保護はありません;必要に応じて、攻撃者はすべてのクォータを使い果たすことができます。
興味深いのは、サービスの小さな例を提供することです:
http :
//samples-gae.appspot.com/samples/xmpp.html
ドキュメントセクション(英語):
XMPP Java APIの概要
ご招待ありがとうございます!
2010年2月14日に追加:
GAE SDK 1.4.2の新しいリリース、XMPPの2番目のバージョン、多くの新しい。