小编Mih*_*goi的帖子

Puma Web服务器不断缓冲响应并在调用response.stream.close时发送它

我正在尝试以设定的时间间隔将数据写入流。

class StreamController < ApplicationController
  include ActionController::Live

  def stream
    response.headers['Content-Type'] = 'text/event-stream'
    5.times do
      response.stream.write "data: hello world\n\n"
      sleep 1
    end
  ensure
    response.stream.close
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,当我向 /stream 端点发送 get 请求(使用curl)时,我得到:“data: hello world\n\n” 5 秒后一次性发送 5 次,而不是接收“data: hello world\n\n” “每秒一次。我使用的是 Rails 7.0.4 附带的默认 puma Web 服务器。我的猜测是它会缓冲响应,然后在调用response.stream.close时发送它。

我尝试添加options = { flush_headers: true }到 puma 配置文件,但没有帮助。

ruby ruby-on-rails actioncontroller

5
推荐指数
1
解决办法
320
查看次数

标签 统计

actioncontroller ×1

ruby ×1

ruby-on-rails ×1