tooから引っ越し2019-06-26WEBrickでchunkedWEBrickのレスポンスでchunkedする話いろいろ探したけどchunkedしてる例が見つからなかったので書いた。res.chunked=()WEBrickのHTTPServerの話です。レスポンスにchunkedを指定してイベントを延々と返す方法を調べました。転送をchunkedで行うにはレスポンスに次の操作をすればよい。true問題はbodyの方。bodyにStringなど完成したバッファを渡してしまうと、結局一気に送ることになってしまって意味がない。"返信だよー"ダラダラ送るにはIOぽいなにかを与える必要がある。bodyにreadpartialメソッドを持つオブジェクトを与えるとIOぽいと判断してくれる。メソッド持つオブジェクト雑に言うとこんなの。endちゃんと書くならreadpartialのバッファサイズの指定があるので、それも考慮しなくてはならない。Tofuに追加したChunkedStreamは次のように実装した。本来アプリで表現したかったストリーム(@stream)、のように中間に入って使う。WEBrickはレスポンスのチャンクを作るために、ChunkedStreamをreadpartialする。送っていないバッファがあればすぐに返却する。送るものがなければ、@streamからpopを試みる。@streamがQueueのような待ち合わせ可能な同期メカニズムであれば、データがなければブロックするであろう。ブロックするということは、WEBrickのそのクライアント担当スレッドが止まるわけだけど、その他のスレッドには関係ないので問題ない。他のクライアントに対してはちゃんと仕事してくれる。WEBrickちゃんとしてる。Eventsぽく返すなら次のようにする。}そうそうさて土曜日はとちぎRuby会議08ですね。体調が悪くて参加できない方がいるようです。dRubyサーバーの説明こわいのでタイトルからFiberを抜いてみました。Bartenderの続...2013-08-273DSから画像をアップロードしてiPhoneにダウンロードするけどサーバに残さないやつを書いた。Rinda::TupleSpaceとか使ってる。RdVはrendez-vousね...2009-04-24笑われた件を読みにくく書きます。Emacsを久しぶ...2009-03-04とちぎRuby会議01のtoRuby勉強会で使ったスクリプトを説明したい。注目記事リンクgithubウィッシュリスト待ってます最新記事n月刊ラムダノートに寄稿しました。gemを動くようにした話(誰か引き取って月別アーカイブはてなブログをはじめよう!m_sekiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。