Napisałem klienta i serwer za pomocą pliku akka.io.tcp i mam problem z odczytaniem wiadomości wysłanych przez klienta. Użyłem json do wysyłania wiadomości. Na stronie klienta, to wpisz wiadomość w ten sposób:Akka IO.TCP z Jsonem
connection ! Write(ByteString(msgString))
po stronie serwera Mam następujący:
override def receive: Receive = {
case Received(data) => listener ! Json.parse(data.utf8String)
case PeerClosed => {
context stop self
}
}
problem jest Akka czyta więcej niż jedną wiadomość na raz, więc dostaję nieważnego Jsona. Czy istnieje sposób, aby akka czytał tylko jedną wiadomość na raz?
Może się mylę, ale wierzę, że ta część będzie na tobie. Będziesz musiał napisać logikę, która wie, kiedy jeden wniosek się kończy, a drugi zaczyna i obsługuje zatrzymywanie niekompletnych żądań i łączenie ich z resztą, gdy przychodzi. Wierzę w terminologię Netty, to byłby FrameDelimiter w przygotowaniu , ale nie sądzę, aby istniała analogiczna funkcja w tej chwili w Akka Tcp (chociaż mogę się mylić). – cmbaxter