- 2009-10-20 (火) 3:58
- 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をお使いください。
- Newer: Casual Talks#1でLTしてきました
- Older: javascriptからsocketが扱えるJSocketを作りました
Comments:0
Trackbacks:1
- Trackback URL for this entry
- http://www.geminium.com/chiba_blog/2009/10/20/371/trackback/
- Listed below are links to weblogs that reference
- JSocketを使ってPOSTもストリーミングするPlackアプリ from へぼへぼCTO日記
- pingback from へぼへぼCTO日記 – JSocketを使ってPOSTもストリーミングするPlackアプリ « とっても! ちゅどん(雑記帳) 09-10-20 (火) 15:06
-
[...] へぼへぼCTO日記 – JSocketを使ってPOSTもストリーミングするPlackアプリ へぼへぼCTO日記 – JSocketを使ってPOSTもストリーミングするPlackアプリ [...]
(28)
(0)
(2)
(0)
Total: 30