Przemodelowanie i refactor serwera na stomp websocketach

0

Postanowiłem użyć Springowych stompowych websocketów i odkryłem, że jest dla mnie dość niewygodne.
Powstał mi taki zagmatwany kod: https://gitlab.com/wawer0123/pingpong/-/tree/main
i chciałbym go jakoś przemodelować tak by był czytelny.

Chodzi mi o stomp-pong.

W skrócie:
W pakiecie com.training.stomp.pong.core.io mamy:

  • channel: każdy Channel definiuje jak połączyć się ze stompowych endpointem, jak dodać subskrypcje i jak reagować na sesję i wiadomości (com.training.stomp.pong.core.io.channel.handler). Mamy to zdefiniowany tylko 1 PingPongStompChannel. Jak byśmy chcieli dodać nowy to wystarczy dodać taką podobną nową klasę w tym pakiecie dziedziczącą po AbstractStompChannel.
  • listener: odpala wszystkie Channele oraz reaguje na eventy połączenia i subskrypcji do endpointa
  • sender: pozwala wybrać sobie kanał z dostępnych i wysłać na niego stompa

Jakieś sugestie?
Tylko nie piszcie tak, skasuj wszystko i nie pisz więcej w javie bo będę płakać. ;)

0

@Controller
@RequiredArgsConstructor(onConstructor = @__(@Autowired))

o_O

Ad samego wątku, to nie rozumiem czego oczekujesz. Masz tam pewnie z setkę klas więc chyba nie oczekujesz że ktoś to będzie teraz czytać i zastanawiać sie WTF i o co w ogóle chodzi żeby zasugerować jak napisać to lepiej.

0

kilkanaście klas, właśnie nie wiem czemu tak dużo mi wyszło...

0

No dobra, nie kilkanaście tylko 22 klasy w pakiecie com.training.stomp.pong.core.io

Za to elengackie, po 30 linii kodu srednio:

2
package com.training.stomp.ping.core.exception;

public class StompMessageHandlerException extends RuntimeException {

    public StompMessageHandlerException(String message, Exception e) {
    }
}

Ty kpisz czy o drogę pytasz?

0

A co w tym złego?

1

Spróbuj rzucić taki Wyjątek. Zgubisz message i oryginalny wyjątek

0

a OK, widzę. No tak.

2

Strasznie takie wszystko przeinżynierowane :(

package com.training.stomp.ping.core.io.channel.handler.session;

import org.springframework.stereotype.Component;

@Component
public final class BasicStompSessionHandler extends AbstractStompSessionHandler {

}

Klikam po tych małych klasach. Niby fajnie że małe. Szukam jakiejś logiki biznesowej/domenowej i nie widzę. Czy w tym projekcie jest jakaś logika? I gdzie jej szukać?

Jeszcze Aspekty, to podan moje siły :| nie po to się zwalniałem z Javy żeby patrzeć na aspekty :D kończę patrzenie

0
KamilAdam napisał(a):

Klikam po tych małych klasach. Niby fajnie że małe. Szukam jakiejś logiki biznesowej/domenowej i nie widzę. Czy w tym projekcie jest jakaś logika? I gdzie jej szukać?

Jeszcze Aspekty, to podan moje siły :| nie po to się zwalniałem z Javy żeby patrzeć na aspekty :D kończę patrzenie

Aspekty tylko do logowania.
Biznesowa logika jest taka by wysłać pong jak dostanie ping. xD
com.training.stomp.pong.core.io.channel.handler.message.PingStompMessageHandler

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