Cześć,
mam kilka pytań odnośnie ActionCable:
-
we wszystkich materiałach, które znalazłem zawsze przesyłany jest jeden obiekt (np. zadanie z todolisty, głos w głosowaniu, itp.), który jest następnie ‘doklejany’ za pomocą javascriptu i zawsze na początku jest stan ‘zerowy’ (brak zadań, głosów, rozmów) . To ma sens w wypadku budowania danego zbioru od zera, ale nie sprawdza się w momencie np. otworzenia listy z 3 zadaniami. W związku z tym pytanie - jak najlepiej to rozwiązać? Na chwilę obecną wpadłem na to, że pierwsze otworzenie strony jest generowane przez widok (@items.each itp.), tworzona jest subskrypcja i za pomocą websocketów jest wysyłana tablica z nazwami danych zadań. Takie rozwiązanie działa, nie ma też problemu w usuwaniu i dodawaniu zadań (synchronizuje się wszystko na kilku otwartych kartach przeglądarki), ale każdorazowo jest czyszczony widok na stronie i każdorazowo jest wysyłana cała tablica. Jest może lepsza metoda, aby na początku wysłać websocketami całą tablicę, a potem tylko zmiany?
-
i druga sprawa - jak sobie poradzić z dużą ilością subskrybowanych danych na stronie? Przykładowo sklep internetowy, na którym jest wyświetlane 30 produktów, u każdego produktu jest za pomocą websocketów podawana aktualna ilość na magazynie, cena, średnia ocen, nazwa i opis. Jeżeli każdy z tych 30 produktów będzie przesyłany jako hash zawierający 5 elementów, to przy 10 użytkownikach na stronie zostanie utworzonych 300 połączeń - chyba nie tędy droga. To samo dotyczy przykładowo panelu administracyjnego, z którego korzysta 20-30 osób jednocześnie i na którym jest wyświetlanych 10-15 różnych danych (np. ilość mejli do odpowiedzenia, ilość reklamacji itd itp.). Jak rozwiązać kwestię panelu - jeden kanał z haszem i wszystkimi danymi lub pojedyncze kanały dla każdej danej?
Z góry dziękuję za podpowiedzi lub nakierowanie w odpowiednią stronę