我正在尝试使用Puma服务器在rails ActiveController::Live
上实现一个小测试。我通过rails s puma
启动了Puma服务器,并使用curl localhost:3000/messages/events
进行测试。但是,在一次返回数据之前有一段很长的停顿,这与使用WEBrick相同。那么为什么Puma服务器不能直播结果呢?
class MessagesController < ApplicationController
include ActionController::Live
def index
@messages = Message.all
end
def create
@message = Message.create!(params[:message].permit(:content, :name))
end
def events
3.times do |n|
response.stream.write "#{n}...\n\n"
sleep 2
end
ensure
response.stream.close
end
end
答案 0 :(得分:1)
您需要设置响应标头
def events
response.headers['Content-Type'] = 'text/event-stream'
3.times do |n|
response.stream.write "#{n}...\n\n"
sleep 2
end
ensure
response.stream.close
end