2011年4月20日水曜日

GAEのChannelAPIを理解する ~サーバ編~

GAEで、1.4から採用されたChannel APIについてちょっとわかってきたので簡単に報告します。

ChannelAPIとは
これは俗にいうCometの処理に相当します。チャットのようなPushするプログラミングを作成する際に、GAEのリソースを利用して実装できるというのは大きな魅力でしょう。

ChannelAPIにおいて理解しておくべき最低限の用語2つ
  • Token ・・・ ユーザとコネクションを貼るためのトークン。サーバーは最初の接続要求の時に、このTokenの値をクライアントに渡す必要があります。
  • channelKey ・・・接続チャンネル。ユーザごとに区別するような方法が一般的らしい。
最初の接続処理Tokenの生成部分
ChannelService channelService = ChannelServiceFactory.getChannelService();
String token = channelService.createChannel(channelKey);

//ここで生成されたtokenをクライアントに渡すこと


プッシュ処理(ユーザへの送信)部分
String message="なにか来ました"
ChannelService channelService = ChannelServiceFactory.getChannelService();
channelService.sendMessage(new ChannelMessage(channelKey, message));

とまあ、驚くほど簡単にできたりします。

ちょっとchannelKeyの設定の仕方はいろいろあるようですが、例えば1つに固定にしておくとそのchannelKeyで接続したユーザ全てに同じメッセージを送ることができました。単純にブロードキャストするだけでしたら、そういった方法もいいかもしれません。個別にプッシュ対応する場合は、該当するchannelKeyに対してのみ、sendMessageメソッドを呼び出せば良いのでしょう。

なお、GAE上で本格的に稼働させたわけではないので、どれぐらいの負荷がかかるのかは不明です。

クライアント編については、また後日。。。

0 件のコメント:

コメントを投稿