Здравствуйте, пытаюсь настроить сервер и использовать SSE. Вот пример ошибки которая возникает:
2016/08/24 16:15:57 [error] 6923#0: *1427 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 178.35.63.179, server: _, request: "GET /users/sse/events HTTP/1.1", upstream: "http://unix:/var/run/unicorn.sock/users/sse/events", host: "example.ru", referrer: "example.ru/1"
Вот функция контроллера, которая управляет SSE:
def events
response.headers["Content-Type"] = "text/event-stream"
ActiveRecord::Base.connection_pool.with_connection do |connection|
conn = connection.instance_variable_get(:@connection)
begin
conn.async_exec "LISTEN user#{current_user.id}"
conn.async_exec "LISTEN heartbeat"
conn.wait_for_notify do |event, id, data|
puts event.to_s
if event == "user#{current_user.id}"
response.stream.write("event: message\ndata: #{data}\n\n")
elsif event == "heartbeat"
response.stream.write("event: heartbeat\ndata: heartbeat\n\n")
end
end
rescue
#Client disconnected
ensure
conn.async_exec "UNLISTEN user#{current_user.id}"
conn.async_exec "UNLISTEN heartbeat"
conn.flush
conn.finish
end
end
rescue
#puts "@@@@@@@@@@@@@@ IOERROR"
ensure
#puts "@@@@@@@@@ Strem closed"
response.stream.close
end
Вроде как конекшны закрываю, использую "heartbeat" для того чтобы определить отключился ли пользователь. Может кто знает в чем дело? Я думаю что все таки что-то не так с этой функцией. Руби сервер - Unicorn