0

パイプからデータを読み取ることを使用してストリーミング Gzip デコンプレッサを実装しようとしてZlib::GzipReaderいますが、ブロックしない方法でそれを行う方法がわかりません。関連するコードは次のとおりです。

# In thread A
read, write = IO.pipe

reader = Zlib::GzipReader.new(read) # this blocks

reader.each_line do |line|
  puts "Yay line! #{line}"
end

# In thread B
streaming_http_response do |gzip_chunk|
  write.puts(some_chunk)
end

圧縮された文字列全体をリーダーに読み込まずに、解凍されたコンテンツをストリーミングするにはどうすればよいですか?

4

1 に答える 1

0

Zlib::GzipReader.newヘッダーを読み取れるまでのみブロックすることがわかりました。さらにいくつか書いた後、うまくいきました。

于 2014-01-19T04:05:56.873 に答える