我正在尝试以设定的时间间隔将数据写入流。
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 配置文件,但没有帮助。