- 2009/10/20 火曜日 3:58:37
- perl
さて、前エントリでJSocketというのを作ったと書いたのですが、これは実はjavascriptで動くtwitter streamクライアントを作るならばmultipart/mixedを使うべきというのを読んで、レスポンスがpollではなくてストリーミングできるというのを知って、リクエストもやりたいよというふうに思ったのがきっかけでした。
まず、XHRでできないかを試してみたのですが、xhr.send(data)を一回読んでしまうと少なくともjavascript側ではリクエストは完了したと思ってしまって、再度xhr.send(data)しても反応はありませんでした。
そこでJSocketの登場です。JSocketを使うとhttpリクエストを断続的に送信することができます。やったですね。
で、Plack::Server::Coroを使って試しに
リアルタイムチャット
を作ってみました。どうぞお試し下さい。レスポンスもJSocketを使っていますのでmultipartに比べてboundary分お得だったりもします。テキストエリアに入力された文字がストリーミングで送信され、また他人のデータもストリーミングで受信できていると思います。ちなみに自分の発言もサーバから持ってきてるので一人でも確認できます。
ちなみにこれを1つのコネクションでやってしまおうというのがWebsocketなんだろうという認識ですね。ただwebsocketはhttpの上に一応のってますがハンドシェイク以外の部分はhttp/1.0やhttp/1.1的には正しくないでしょうし、JSocketでの二重接続であれば正しいhttpとしてふるまえるはずで、現行のapacheやproxy等でも扱える可能性があったりします。
あ、チャットのサンプルコードもgithubにあげてあります。
plackup -s Coro --app chat.psgi
という感じでPlack::Server::Coroをお使いください。
コメント:0
トラックバック:1
- この記事のトラックバック URL
- https://blog.everqueue.com/chiba/2009/10/20/371/trackback/
- トラックバックの送信元リスト
- JSocketを使ってPOSTもストリーミングするPlackアプリ - へぼい日記 より
- pingback - へぼへぼCTO日記 – JSocketを使ってPOSTもストリーミングするPlackアプリ « とっても! ちゅどん(雑記帳) より 2009/10/20 火曜日
[…] へぼへぼCTO日記 – JSocketを使ってPOSTもストリーミングするPlackアプリ へぼへぼCTO日記 – JSocketを使ってPOSTもストリーミングするPlackアプリ […]