Websocket + REST API – jak synchronizować dane u klienta?

0

Piszę aplikację, w której dane przesyłane będą do klienta za pomocą websocketów i REST API, tzn. po zalogowaniu apka uruchamia socket odbierający z serwera komunikaty podzielone według ID kanału, a potem wysyła GET po ostatnie kanały wraz z komunikatami.

Mam jednak zagwozdkę jeśli chodzi o start aplikacji. Jak zsynchronizować oba źródła?

Przyszło mi do głowy, żeby buforować komunikaty z socketa do czasu odpowiedzi z API, a potem scalić je z danymi z API. Czy to dobre rozwiązanie, czy może niepotrzebnie komplikuję i jest jakiś prostszy sposób?

1

Jak zsynchronizować oba źródła?

Co to znaczy zsynchronizować?
Co miałoby się synchronizować / buforować?

2

Na szybko - możesz np przesortować po jakiejś dacie i scalić oba zbiory danych na kliencie

0
Patryk27 napisał(a):

Jak zsynchronizować oba źródła?

Co to znaczy zsynchronizować?
Co miałoby się synchronizować / buforować?

Założenie jest takie, że użytkownik po zalogowaniu zaczynać odbierać socketem z serwera aktualne komunikaty (JSON). W międzyczasie otrzymuje historię z API (lista JSON-ów) Chciałbym, aby po tym, jak użytkownik dostanie już historię z API, przedstawić mu spójną listę.

1

Czyli coś w stylu: logujesz się na czat i "na start" widzisz poprzednie 10 wiadomości (które zostały napisane zanim zdążyłeś się jeszcze pojawić), tak?

0

Faktycznie, na początku chyba niejasno się wyraziłem :) Może być przykład czatu. Loguję się i zaczynam dostawać wiadomości z serwera przez socket. Pobieram też historię, te 10 ostatnich. Historia może (ale nie musi) zawierać część wiadomości, które już otrzymałem socketem. Po otrzymaniu historii chciałbym mieć scaloną listę wiadomości, która potem będzie aktualizowana wiadomościami z socketa.
Zrobiłem tak jak pisał Charles_Ray, sortuję po dacie dane z socketa i łączę z historią.

1

tak jak napisałeś, zbierasz sobie dane w buforze do czasu nie odebrania danych i potem to sychronizujesz sobie, po id najłatwiej sobie te 2 tablice połączyć :) Pamiętaj, że ten proces musisz przeprowadzić też przy chwilowym rozłączeniu, warto też robić refresh po jakimś czasie bo zawsze mogą jakieś dane nie dojść przez ws, o błędy w tej transmisji łatwo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1