Próbuję użyć komponentu Rails 4 Live Streaming. Wszystko działa, ale wygląda na to, że strumień pozostaje otwarty i blokuje nowe żądanie.Rails 4, transmisja na żywo, pozostaje otwarta, blokuje żądania
Jak mogę się upewnić, że połączenie zostanie poprawnie zamknięte po zamknięciu lub kliknięciu nowego łącza w aplikacji?
To jest kontroler zdarzeń na żywo.
def events
response.headers["Content-Type"] = "text/event-stream"
redis = Redis.new
redis.psubscribe("participants.*") do |on|
on.pmessage do |pattern, event, data|
response.stream.write("event: #{event}\n")
response.stream.write("data: #{data}\n\n")
end
end
rescue IOError
ensure
redis.quit
response.stream.close
end
conf Database
production:
adapter: postgresql
encoding: unicode
database: ************
pool: 1000
username: ************
password: ************
timeout: 5000
Używam puma jako samodzielny serwer WWW (nie mam dużych plików statycznych, które muszą być podawane przez nginx) na Ubuntu 10.04 z PostgreSQL 9.2.x.
Czy byłeś kiedykolwiek w stanie rozwiązać ten problem? Odpowiedź Dana jest dobrym podsumowaniem tego, co się dzieje, ale nie do końca odpowiada na pytanie (zakładam również dla ciebie, ponieważ nie zaakceptowałeś tego). –
@Teeg Jak napisałeś, jest to dobre podsumowanie, ale nie rozwiązało to mojego pytania. Zamiast tego użyłem Faye, co jest smutne, ponieważ naprawdę chciałem, żeby to działało poprawnie. – Philip
To zbyt źle. Wysłałem [podobne pytanie] (http://stackoverflow.com/q/18970458/877472), które zawiera głupkowate rozwiązanie. Dam ci znać, jeśli kiedykolwiek to wymyślę. –