ruby-on-rails ruby ruby-on-rails-4 eventmachine

ruby on rails - Rails cómo analizar texto/evento-stream?



ruby-on-rails ruby-on-rails-4 (2)

Tengo una URL de API que es una secuencia de datos con el tipo de contenido: text/event-stream .

¿Cómo es posible escuchar la transmisión? ¿Te gusta suscribirte a cada evento para imprimir los datos? He intentado usar el ruby ​​libary em-eventsource

Mi archivo test.rb :

require "em-eventsource" EM.run do source = EventMachine::EventSource.new("my_api_url_goes_here") source.message do |message| puts "new message #{message}" end source.start end

Cuando visito mi api url puedo ver los datos actualizados cada segundo. Pero cuando ejecuto el archivo ruby ​​en el terminal, no imprime ningún dato / mensaje.


Configurar un temporizador para verificar source.ready_state , parece que no se conecta a la API por alguna razón

EDITAR: parece que su problema está en el SNI de https, que no es compatible con la versión actual de eventmachine, por lo que al conectarse, la fuente de eventos intenta conectarse al host virtual predeterminado en la máquina api, no en el que está la api, por lo tanto, el estado CONNECTING

Intente usar eventmachine de la rama maestra, ya dice que tiene soporte para SNI, que se lanzará en 1.2.0:

gem ''eventmachine'', github:''eventmachine/eventmachine''


require ''eventmachine'' require ''em-http'' require ''json'' http = EM::HttpRequest.new("api_url", :keepalive => true, :connect_timeout => 0, :inactivity_timeout => 0) EventMachine.run do s = http.get({''accept'' => ''application/json''}) s.stream do |data| puts data end end

Utilicé EventMachine http libary.