Sposób, w jaki są tworzone pliki SSE, jest wykonywany przez klienta otwierającego połączenie z serwerem, który pozostaje otwarty do momentu, gdy serwer będzie miał dane do wysłania. Jest to część specyfikacji SSE, a nie rzecz charakterystyczna dla ActionController :: Live. Jest efektywnie taki sam, jak długi głosowanie, ale połączenie nie jest zamykane po zwrocie pierwszego bitu danych i mechanizmem wbudowanym w przeglądarkę.
Jako taki, jedynym sposobem, w jaki można go zrealizować, jest posiadanie wielu otwartych połączeń klienckich z serwerem internetowym, które pozostają bezterminowo. Jeśli chodzi o to, jakie zasoby są potrzebne, aby sobie z nimi poradzić, nie jestem pewien, ponieważ nie próbowałem jeszcze tego testować, ale potrzebuję wystarczającej liczby serwerów, aby Puma mogła otworzyć tysiące połączeń, jeśli masz tak wielu użytkowników z otwarta strona.
Domyślnym limitem dla puma jest 16 równoczesnych połączeń. Kilka blogów na temat konfigurowania SSE dla Railsów wspomina o zwiększeniu tej wartości do większej wartości, ale żadna z nich, którą znalazłem, nie sugeruje, jaka powinna być ta wyższa wartość. Wspominają, że liczba połączeń DB będzie musiała być taka sama, ponieważ każdy wątek Railsowania utrzymuje jeden z nich. Coś w rodzaju drogiego sposobu prowadzenia rzeczy.
"Uruchom test porównawczy" to jedyna odpowiedź naprawdę.
Nie mogę wypowiedzieć się na temat odwrotnego proxy, ponieważ tego nie próbowałem, ale ponieważ SSE są wykonywane przez standardowy HTTP, nie sądzę, że będzie potrzebował jakiejkolwiek specjalnej konfiguracji.
OK, dziękuję za informację zwrotną! – tompave
czy ktoś faktycznie zrobił taki test porównawczy? – nicolas
Nie uruchomiłem testu porównawczego, ale w końcu odrzuciłem próbę jako _nowa produkcja ready_. Obawiam się, że w przypadku tego rodzaju scenariuszy musimy użyć modelu zdarzenia. – tompave