Twice in the past month I've had my long running Twitter Stream consumer stall and not receive any tweets, without it calling the no_data_callback. I'm wondering if this could be because the Streaming API is sending whitespace (\n or \r or both) and this whitespace is actually treated as data at https://github.com/voloko/twitter-stream/blob/master/lib/twitter/json_stream.rb#L130. This line that resets @last_data_received_at doesn't seem to check whether the data is whitespace or not - and maybe that's why the no_data_callback is never called.
I guess this would be the wrong place to set @last_data_received_at anyway because it can't know that the data is whitespace without first parsing it.
I'm happy to work on a fix, but I wanted to get some feedback first on whether or not my logic seems sound.