Is there a way to have IO.select return a single input character without receiving an EOF? I would like to be able to read user input from the keyboard the same way I read from any other stream, like an open TCP socket connection. It would allow me to make an event loop like this:
loop {
  rd, _, _ = IO.select([long_lived_tcp_connection, stdin])
  case rd[0]
  when long_lived_tcp_connection
    handle_server_sent_event(rd[0].read)
  when stdin
    handle_keypress(rd[0].read)
  end
}
I've been looking into io/console but it doesn't quite give me this capability (although IO#getch comes pretty close).
 
     
     
    