Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

XMPP and Tornado

3,478 views

Published on

  • Be the first to comment

XMPP and Tornado

  1. 1. 私はいかにして XMPP で悩むのをやめ、 Tornado を愛するようになったか Dr. Pythonlove or: How I Learned to Stop Worrying about XMPP and Love Tornado id:kazunori_279 @kazunori_279
  2. 2. 自己紹介 <ul><li>スティルハウス佐藤一憲 </li></ul><ul><ul><li>http://www.sth.co.jp </li></ul></ul><ul><li>お仕事 </li></ul><ul><ul><li>開発( App Engine 、 Flex/AIR 、 Rails ) </li></ul></ul><ul><ul><li>ライティング( @IT 、日経 xx 、 Adobe 等) </li></ul></ul><ul><ul><ul><li>ペンネーム吉川和巳 </li></ul></ul></ul><ul><ul><li>セミナー講師( Java 、 AIR ) </li></ul></ul>
  3. 3. 好きな技術 <ul><li>Google App Engine </li></ul><ul><ul><li>安くてスケールして面白いから </li></ul></ul><ul><li>HTML 以外の何か </li></ul><ul><ul><li>HTML[^5] 爆発しろ! </li></ul></ul><ul><ul><li>Flex/AIR, JS, 携帯アプリ </li></ul></ul><ul><li>プッシュ </li></ul><ul><ul><li>ものぐさだから </li></ul></ul><ul><li>非同期 </li></ul><ul><ul><li>せっかちだから </li></ul></ul>appengine あみぐるみ © @kinofumi さん(未承諾)
  4. 4. 新たなミッション: 「 Flash でチャットを作る」 当然、 App Engine + XMPP + Flash でやりたい!
  5. 5. XMPPって? <ul><li>IM の標準プロトコル( RFC3920 ) </li></ul><ul><ul><li>「 Jabber 」プロトコルがベース </li></ul></ul><ul><ul><li>TCP 5269 番で XML を流す </li></ul></ul><ul><ul><li>App Engine SDK 1.2.5 以降でサポート </li></ul></ul><message type=&quot;chat&quot; from=&quot;xxx@appspot.com/bot&quot; to=&quot;kazunori279@gmail.com/1D459EBB&quot;> <body> こんにちは </body> </message>
  6. 6. 試行錯誤・その1 <ul><li>GAE/Py </li></ul><ul><li>GTalk サーバー </li></ul><ul><li>GTalk クライアント </li></ul><ul><ul><li>デモ </li></ul></ul>class XMPPHandler(webapp.RequestHandler): &quot;&quot;&quot;Sendback echoes to a XMPP client&quot;&quot;&quot; def post(self): message = xmpp.Message(self.request.POST) message.reply(message.body + ' ' + message.body)
  7. 7. 試行錯誤・その2 <ul><li>GAE/Py </li></ul><ul><li>GTalk サーバー </li></ul><ul><li>Flash クライアント </li></ul><ul><ul><li>seesmic-as3-xmpp </li></ul></ul><ul><ul><li>GTalk サーバーとの TLS 接続でバグ </li></ul></ul><ul><ul><li>GTalk って商用利用 OK!? </li></ul></ul>
  8. 8. 試行錯誤・その3 <ul><li>GAE/Py </li></ul><ul><li>ejabberd </li></ul><ul><ul><li>Erlang 実装 </li></ul></ul><ul><li>Flash クライアント </li></ul><ul><ul><li>ejabberd と GAE がうまくつながらない </li></ul></ul><ul><ul><ul><li>Flash->GAE しか届かない </li></ul></ul></ul>
  9. 9. 試行錯誤・その4 <ul><li>GAE/Py </li></ul><ul><li>jabber.org </li></ul><ul><ul><li>公開 ejabberd サーバー </li></ul></ul><ul><li>Flash クライアント </li></ul><ul><ul><li>seesmic-as3-xmpp が jabber につながらない </li></ul></ul>
  10. 10. 試行錯誤・その5 <ul><li>GAE/Py </li></ul><ul><li>jabber.org </li></ul><ul><li>Pidgin </li></ul><ul><ul><li>Windows XMPP クライアント </li></ul></ul><ul><ul><li>… それ Flash じゃないし… </li></ul></ul>
  11. 11. 疲れた orz
  12. 12. 結論: XMPP 使えない
  13. 13. Tornadoってどうだろう? <ul><li>Tornado って? </li></ul><ul><ul><li>http://www.tornadoweb.org/ </li></ul></ul><ul><ul><li>Facebook が 9 月に公開 </li></ul></ul><ul><ul><li>FriendFeed で使われてる技術 </li></ul></ul><ul><ul><li>Python の Web フレームワーク </li></ul></ul><ul><li>diesel ってのもあるよ </li></ul><ul><ul><li>( from Ian さん) </li></ul></ul>
  14. 14. Tornadoのいいところ <ul><li>プッシュだ! </li></ul><ul><ul><li>HTTP の long polling で push できる </li></ul></ul><ul><ul><li>XMPP なんて面倒で互換性低し! </li></ul></ul><ul><ul><li>ファイアウォールだって抜けられる </li></ul></ul><ul><li>非同期だ! </li></ul><ul><ul><li>epoll で実装。 C10K 対応 </li></ul></ul><ul><li>残念: GAE/Py じゃ push できない… </li></ul>
  15. 15. というわけで最適解: Amazon EC2 + Tornado App Engine さようなら~! App Engine 先生の次回作にご期待ください!

×