客户端关闭浏览器或转到其他页面后,直播不会关闭
The live stream won't be closed after client close browser or go to another page
以下是我的事件流
代码片段
然而,它应该在客户端关闭浏览器后在控制台上打印“关闭直播流”字符串,但它没有。
def new_prizes_stream
begin
ap "open a live stream"
response.headers['Content-Type'] = 'text/event-stream'
redis = Redis.new
redis.subscribe('messages.create') do |on|
on.message do |event, data|
response.stream.write "event: #{event}\n"
response.stream.write "data: #{data}\n\n"
end
end
rescue ActionController::Live::ClientDisconnected
ensure
ap "close a live stream"
redis.quit
response.stream.close
end
end
development.rb
config.allow_concurrency = true
config.preload_frameworks = true
config.cache_classes = false
config.eager_load = false
Redis 订阅正在阻塞。请在此处查看问题:https://github.com/rails/rails/issues/10989
我在单独的线程中使用心跳解决方案来检测 ClientDisconnected 异常。
以下是我的事件流
代码片段然而,它应该在客户端关闭浏览器后在控制台上打印“关闭直播流”字符串,但它没有。
def new_prizes_stream
begin
ap "open a live stream"
response.headers['Content-Type'] = 'text/event-stream'
redis = Redis.new
redis.subscribe('messages.create') do |on|
on.message do |event, data|
response.stream.write "event: #{event}\n"
response.stream.write "data: #{data}\n\n"
end
end
rescue ActionController::Live::ClientDisconnected
ensure
ap "close a live stream"
redis.quit
response.stream.close
end
end
development.rb
config.allow_concurrency = true
config.preload_frameworks = true
config.cache_classes = false
config.eager_load = false
Redis 订阅正在阻塞。请在此处查看问题:https://github.com/rails/rails/issues/10989
我在单独的线程中使用心跳解决方案来检测 ClientDisconnected 异常。