XMPPを利用したメッセージの送受信
web.xmlの設定
Servlet名とservlet-mappingを設定する。
<servlet> <servlet-name>{SERVLETNAME}</servlet-name> <servlet-class>{PACKEGENAME}.{SERVLETNAME}Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>{SERVLETNAME}</servlet-name> <url-pattern>/_ah/xmpp/message/chat/</url-pattern> </servlet-mapping>
- GAEのchat urlは「/_ah/xmpp/message/chat/」
Servlet作成
Import
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.SendResponse.Status; import com.google.appengine.api.xmpp.XMPPService; import com.google.appengine.api.xmpp.XMPPServiceFactory;
メッセージの取得
doPostメッソドでResquesetをMessageへ変換する。
メッセージはfromid, toid, type, bodyで構成されており、
Messageより、取得判別が可能
req.setCharacterEncoding("UTF-8"); XMPPService xmppService = XMPPServiceFactory.getXMPPService(); //メッセージの変換 Message rcvMsg = xmppService.parseMessage(req); //toIDの取得 JID toId = rcvMsg.getFromJid(); //fromIDの取得 JID[] fromID = rcvMsg.getRecipientJids(); //Message Bodyの取得 String strBody = rcvMsg.getBody();
- toIDの場合、貰った場合のfromIDが相手のIDとなる
メッセージの送信
MessageBuilderで送信用メッセージを作成する。
Message msg = new MessageBuilder().withFromJid(fromJid).withRecipientJids(toJid).withBody(”Message Text”).build(); Status status = xmppService.sendMessage(msg).getStatusMap().get(toJid); if (!SendResponse.Status.SUCCESS.equals(status)) { //失敗の場合の処理 }
未確認
Chat Type : Presence, Subscriptionの使い方