gpt4 book ai didi

ruby-on-rails - Rails ActionController::实时连接断开

转载 作者:行者123 更新时间:2023-12-04 06:14:54 27 4
gpt4 key购买 nike

在我的 ActionController::Live 监听大约 5 分钟后,我在浏览器中看到以下内容,并且我的 EventSource 断开了连接。

EventSource 的响应具有不是“text/event-stream”的 MIME 类型(“text/html”)。中止连接。

知道“text/html”请求来自哪里吗?

我正在使用 Unicorn 和 Nginx。

这是我的后端代码:

def listen_to_checkins
response.headers['Content-Type'] = 'text/event-stream'

redis = Redis.new
redis.psubscribe("checkin.*.#{current_branch.id}") do |on|
puts "subscribed..."
on.pmessage do |pattern, event, data|
puts "got message..."
response.stream.write("event: checkin.create\n")
response.stream.write("data: #{data}\n\n")
end
end

# rails 4.2 uses ClientDisconnected instead of IOError
rescue ClientDisconnected
logger.info "Stream closed"
rescue IOError
logger.info "Stream error"
ensure
redis.quit
response.stream.close
end
end

这是我的咖啡:

ready = ->
if !source
source = new EventSource('/validator/listen_to_checkins')
source.addEventListener 'message', (e) ->
console.log "got message"

source.addEventListener 'checkin.create', (e) ->
console.log "got back: #{e.data}"
get_last_checkins()

source.addEventListener 'open', (e) ->
console.log "opened"

source.addEventListener 'error', (e) ->
console.log "error"

最佳答案

好的.. 我最终在客户端出错时重新连接。在我找到更优雅的解决方案之前,我希望这对某人有所帮助。

ready = ->
if !source
reconnect()

reconnect = ->
if ($("meta[name=listen_to_checkins]").attr("content") == "true")
console.log("reconnecting")
source = new EventSource('/validator/listen_to_checkins')
source.addEventListener 'message', (e) ->
console.log "got message"

source.addEventListener 'checkin.create', (e) ->
console.log "got back: #{e.data}"
show_checkins(JSON.parse(e.data))

source.addEventListener 'error', (e) ->
# reload page on error if we're listening to checkins
setTimeout ()->
reconnect()
, 1000

console.log "error"
console.log e

关于ruby-on-rails - Rails ActionController::实时连接断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33091374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com