'da hem Strict hem de Streamed WebSocket İletilerini Tüketmek Akka HTTP kullanarak bir web yuvası hizmeti oluşturmayı deniyorum. Birden çok kareye ulaşan Aktarılan iletilerin yanı sıra, toplam olarak gelen Katı iletilerle başa çıkmam gerekiyor. Web soketlerinin bir akışa aktarılmasını geçmek için handleWebSocketMessages() ile bir rota kullanıyorum.Akka
val route: Route =
get {
handleWebSocketMessages(createFlow())
}
def createFlow(): Flow[Message, Message, Any] = Flow[Message]
.collect {
case TextMessage.Strict(msg) ⇒ msg
case TextMessage.Streamed(stream) => ??? // <= What to do here??
}
.via(createActorFlow())
.map {
case msg: String ⇒ TextMessage.Strict(msg)
}
def createActorFlow(): Flow[String, String, Any] = {
// Set Up Actors
// ... (this is working)
Flow.fromSinkAndSource(in, out)
}
nasıl iki kolu Sıkı ve Akış hem mesajlar gerçekten emin değilim: Ben kodu şöyle görünür.
.collect {
case TextMessage.Strict(msg) ⇒ Future.successful(msg)
case TextMessage.Streamed(stream) => stream.runFold("")(_ + _)
}
Ama şimdi benim akışı açıkçası iletileri işlemek gerekir, özellikle de o zaman nasıl başa emin değilim sadece Strings, yerine gelecek [dize] işlemek zorundadır: Ben böyle bir şey yapabileceğini fark sırayla.
Bu akka sorununu gördüm, ki bu biraz alakalı görünüyor, ama tam olarak ihtiyacım olan şey değil (sanmıyorum?).
https://github.com/akka/akka/issues/20096
Herhangi bir yardım
Teşekkürler svezfaz. İpuçlarınız, sorunumun çözülmesine yardımcı oldu. Şimdi çalışıyorum. –
Bu dava için daha fazla kolaylık yöntemi eklemek, bu arada bizim radarımıza da bir göz atın: https://github.com/akka/akka/issues/20096 –
Teşekkürler. Konuya abone oldum. Bu soru/cevabın insanlara ortalama zamanda yardım edeceğini umuyorum. –