rails 4 直播不适用于 Puma

问题描述 投票:0回答:1

我正在尝试使用 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
ruby-on-rails ruby live-streaming puma
1个回答
0
投票

您需要设置响应标头

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
© www.soinside.com 2019 - 2024. All rights reserved.