2010年 10月 17日

複数ブラウザで同時に JS を実行するシェルをつくった

plackup -s AnyEvent psgi.psgi

して、http://localhost:5000/ とかを各ブラウザで開いておく (ここは手動)

でもって ./shell.pl するとプロンプトがでてくるので適当に入力すると各ブラウザからレスポンスがかえってくる。

仕組み

  • 各ブラウザで / をひらくと、それぞれ long poll してスクリプトの実行要求を待つ。
    • 親の iframe がずっと long poll する
  • 実行要求は適当に HTTP で送る (結果がかえってくるまで long poll する)
  • 各ブラウザはそれを受け取って子 iframe で実行する
  • 各ブラウザは結果を HTTP 経由で送る
  • 各ブラウザからの結果が集ったら実行要求の応答をする

二重の long poll になっている。

ブラウザたち → 中継ウェブサーバ ← 実行させたいクライアント

中継サーバは Plack, AnyEvent

どや