Streaming files from EventMachine handler?

Posted by Noah on Stack Overflow See other posts from Stack Overflow or by Noah
Published on 2010-11-09T21:16:27Z Indexed on 2011/01/10 11:53 UTC
Read the original article Hit count: 329

Filed under:
|
|

I am creating a streaming eventmachine server. I'm concerned about avoiding blocking IO or doing anything else to muck up the event loop.

From what I've read, ruby's non-blocking IO can be used to stream files in a non-blocking way, or I can call next_tick, but I'm a little unclear about which of these approaches is preferable.

Part of the problem is that I have not found a good explanation of non-blocking IO library functions in ruby.

Short version: Assuming a long-lived network IO operation, several wall clock minutes of streaming per file, transfer, what is the best way to do this in eventmachine without gumming up the event loop?

  while 1 do
    file.read do |bytes|
      @conn.send_data bytes
    end
  end

I understand that the above code will block and I'm wondering what to put in its place. Also, I cannot use the FileStreamer class that is part of eventmachine as is, because I need to manipulate the data after it's read but before it's sent.

Thanks, Noah

© Stack Overflow or respective owner

Related posts about ruby

Related posts about nonblocking