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.