如何从Akka Http Web-socket客户端接收消息?

时间:2018-05-18 06:31:29

标签: scala akka akka-stream akka-http java-websocket

目前,我们正在使用此功能将邮件发送到客户端

Flow[Message]
  .mapConcat(_ ⇒ Seq.empty[String].toList)
  .merge(source) // Stream the data we want to the client
  .map(data => TextMessage(data))

val source = Source.fromFuture(data).throttle(1, 1.second, 1, ThrottleMode.Shaping).runWith(Sink.ignore)

现在,我希望收到客户的回复并相应回复。我该怎么做?

1 个答案:

答案 0 :(得分:0)

您的WS流当前正在忽略传入的消息。 mapConcat应该与传入的TextMessageBinaryMessage匹配,并根据需要做出响应

Flow[Message].mapConcat {
  case tm: TextMessage => TextMessage(Source.single("Hello ") ++ tm.textStream ++ Source.single("!")) :: Nil
  case bm: BinaryMessage =>
    bm.dataStream.runWith(Sink.ignore) // ignore binary message but drain content
    Nil
}