Czat z pokojami

0

Próbuję zrobić czat z podziałami na pokoje wzorując się na tym przykładzie znalezionym w internetach. W każdym pokoju są dwie osoby i chciałbym aby wiadomości z jednego pokoju nie były widoczne w drugim. Próbowałem to zrobić dodając id roomu do każdej wiadomości, a później w html'u wyświetlać tylko te wiadomości, które mają poprawne id pokoju, ale wtedy wiadomości nie wyświetlały mi się wcale. Może coś przeoczyłem lub zrobiłem nie tak. Podaję tutaj link do backendu i frontendu na githubie. Frontend aplikacji jest oparty na Angularze. Moglibyście mi powiedzieć jak to zrobić najlepiej?

1

Masz dwie warstwy, to znacznie trudniejsze debugowanie.
Ja bym się pobawił "surowym" backendem z przeglądarki czy narzędzia do http (jakiego IDE używasz?), aż do pewności że tu jest OK. No, ale ze mnie jest javowiec powoli akceptujący te wszystkie angulary

1
  1. Jw. napisał @AnyKtokolwiek to rozwiązanie jest "z czapki", ponieważ robisz niepotrzebny broadcast wszystkich wiadomości do wszystkich klientów. Filtrowanie powinno odbywać się na backendzie.
  2. ale wtedy wiadomości nie wyświetlały mi się wcale. Może coś przeoczyłem lub zrobiłem nie tak. a masz jakieś testy do tego frontendu? Debugowałeś? Pewnie jakiś czeski błąd przy tym filtrowaniu.
0

@AnyKtokolwiek używam IntelliJ IDEA i mam w nim odpalony zarówno backend jak i frontend, bo bardziej znam to środowisko i łatwiej mi w nim debugować. Ja też dopiero wchodzę w Angulary i chciałbym zrobić chat dla mojej gry multiplayer. na razie testuję osobno aplikację czatu.

@Charles_Ray ale zapisywać wiadomości do bazy, później filtrować i np. co sekundę lub dwie pobierać je na frontend? Bo teraz mi się nie zapisują wiadomości tylko Od razu przechodzą.

0
DreiltAss napisał(a):

@AnyKtokolwiek używam IntelliJ IDEA i mam w nim odpalony zarówno backend jak i frontend, bo bardziej znam to środowisko i łatwiej mi w nim debugować. Ja też dopiero wchodzę w Angulary i chciałbym zrobić chat dla mojej gry multiplayer. na razie testuję osobno aplikację czatu.

To niech ktoś nam wskaże, jak tam wykonywać http (w tym POST, trudny z przeglądarki)

1
DreiltAss napisał(a):

@Charles_Ray ale zapisywać wiadomości do bazy, później filtrować i np. co sekundę lub dwie pobierać je na frontend? Bo teraz mi się nie zapisują wiadomości tylko Od razu przechodzą.

Nie chciałbym ingerować w tak minimalistyczny projekt, ale informatyka zna więcej struktur danych niż baza danych, są np kolejki w dwóch sensach

  • jako kontener w procesie, normalne programowanie w Javie (jedna per zalogowany user - a może jedna per również nie zalogowany ???). Widzę w tym perspektywę
  • jako serwery messagingowe np RabbitMQ
0

@AnyKtokolwiek tak, tylko zostało mi lekko ponad 2 tygodnie na oddanie projektu i dokończenie dokumentacji. Nie chciałbym za bardzo poświęcać czasu na naukę nowych rzeczy, bo muszę zająć się doszlifowaniem kodu i dokończeniem dokumentacji.

1

Zakładam, że jesteś w stanie napisać kawałek Javy, który roześle komunikaty do odpowiednich pokojów. Nie wiem co tam sobie zaprojektowałeś, ale baza danych wydaje mi się opcjonalna, jeśli nie musisz przechowywać historii wiadomości.

0

Niech klient subskrybuje na /chat/{roomId} a swoim springowym serwerze wstrzyknij sobie gdzie chcesz SimpMessageSendingOperations i użyj metody convertAndSend().

Gotowy przykład (z vue, bo angular ssie :D) http://kojotdev.com/2019/09/multiroom-chat-with-spring-websocket-nuxt-vue-vuex/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.