我有一个API网址,它是一个内容类型为text/event-stream
的数据流。
如何收听流?喜欢在每个事件的子项下打印数据?我曾尝试使用ruby libary em-eventsource
我的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
当我访问我的api url时,我可以看到每秒更新的数据。但是当我在终端中运行ruby文件时,它不会打印任何数据/消息。
答案 0 :(得分:4)
设置一个计时器以检查source.ready_state
,似乎由于某种原因它没有连接到api
CONNECTING
状态
尝试使用来自master分支的eventmachine,它已经声明支持SNI,它将在1.2.0中发布:
gem 'eventmachine', github:'eventmachine/eventmachine'
答案 1 :(得分:3)
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
我使用了EventMachine http libary。