スティルハウスの書庫の書庫

はてなダイアリーで書いてた「スティルハウスの書庫」を移転してきました。

App Engineと使うXMPPサーバーを探す

今朝のtwitterSDK 1.2.5のリリースで賑やかでした。Task Queueはもちろん、さっそく使ってみたいのはXMPPです。ちょうどぴったりな要件があったのですごく嬉しい。。

ただひとつ勘違いしてました。。App EngineのXMPPサポートってXMPPクライアント機能のサポートなのですね。。XMPPサーバーを用意するには、

  • Google Talkを使う
  • すでにどこかで動いているXMPPサーバーを使う
  • 自分でXMPPサーバーを立てる

のいずれかが必要。まずGoogle Talkですが、

  • クライアントはGmailアカウントでログインする必要がある(事前にアカウントたくさん作っておいてプールして、クライアントにその都度配布するって方法もあるかな)
  • そもそもGoogle TalkSaaSとして利用して商用サービスを展開できるのか?(→Googleに問い合わせ中)

といった課題あり。

一方、自分でXMPPサーバーを立てるとなると、C10K問題に対応したしっかりしたサーバーがほしいところ。私も2000年頃にjava.nioでcometサーバーを書いたけど、XMPP実装なんて時間がかかることはしたくない。Google Waveの開発環境に使われているというOpenfireというのを見つけたけど、non blocking実装はこれからの様子。さらに探してたら、ejabberdはerlangで実装されててスケーラビリティしっかりしているようです。

http://www.process-one.net/en/technology/

ProcessOne has designed and delivered solutions that support more than 450,000 simultaneously connected users in a single domain.

ということで、ejabberdをEC2にでも乗せてXMPPサーバーを立てるのがいいかな〜と考え中です。もしGoogle TalkSaaS対応しているという回答なら、そっちが理想ですが。

あと、AS3でXMPPを使うためのライブラリを見つけた:

http://code.google.com/p/seesmic-as3-xmpp/