繁体   English   中英

Akka-Http:使用websockets-扩展流程的模式

[英]Akka-Http : Working with websockets - Patterns for extending the Flow

akka http websocket的确很好用。 它接受一个Flow[Message, Message, Future[Done]

我们可以创建一个形状相同的Source val src = Source.maybe和Sink val snk = Sink.foreach(...)并调用Flow.fromSinkAndSourceMat(snk, src) src用于将数据发送到websocket(流的源),而snk用于接收数据。

在某些情况下,我们希望扩展传递的流,即-我们希望接收Message,将其发送到另一个Flow进行JSON解析或数据验证,然后最终发送到接收器。

如何构造我在Http().singleWebSocketRequest(WebSocketRequest("ws://someip:port"), flow)传递的Http().singleWebSocketRequest(WebSocketRequest("ws://someip:port"), flow)以包括其他各个流阶段以及最后的接收器。 我可以将源设置为Source.maybe是因为我只关心传入。

您可以将Sink组成一系列Flow ,最后一个Sink

val flow1: Flow[Message, Message, NotUsed] = ???
val flow2: Flow[Message, String, NotUsed] = ???
val sink: Sink[String, Future[Done]] = Sink.foreach[String](println) 

val megaSink = flow1.via(flow2).to(sink)

然后,您可以使用已组成的Sink器将您的WS流组合在一起,类似于您已经拥有的:

Flow.fromSinkAndSource(megaSink, Source.maybe)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM