Tôi đã viết một ứng dụng khách và máy chủ bằng cách sử dụng akka.io.tcp và tôi gặp sự cố khi đọc thư được khách hàng gửi. Tôi đã sử dụng json để gửi tin nhắn. Ở phía khách hàng, tôi viết thông điệp theo cách này:Akka IO.TCP với Json
connection ! Write(ByteString(msgString))
Ở phía máy chủ tôi đã điều sau đây:
override def receive: Receive = {
case Received(data) => listener ! Json.parse(data.utf8String)
case PeerClosed => {
context stop self
}
}
Vấn đề là AKKA được đọc nhiều hơn một thông điệp cùng một lúc, vì vậy tôi nhận được một Json không hợp lệ. Có cách nào để làm cho akka chỉ đọc một tin nhắn cùng một lúc không?
Tôi có thể sai ở đây, nhưng tôi tin rằng một phần sẽ là về bạn. Bạn sẽ phải viết logic biết khi nào một yêu cầu kết thúc và một yêu cầu khác bắt đầu và xử lý việc giữ các yêu cầu không đầy đủ và ghép nối chúng với phần còn lại của chúng khi nó đến. Tôi tin vào thuật ngữ Netty, đây sẽ là FrameDelimiter trong đường dẫn , nhưng tôi không tin rằng có một tính năng tương tự hiện tại trong Akka Tcp cho điều này (mặc dù tôi có thể sai). – cmbaxter