【发布时间】:2016-05-16 18:33:18
【问题描述】:
使用 Akka-Http 和 Akka-Streams 2.4 版,我如何构造一个流,使其具有一个作为 websocket 的接收器。
例如,我想要一个生成随机数的源,这些数字被过滤,假设保留偶数,然后作为接收器流向 WebSocket。
谢谢
【问题讨论】:
标签: scala websocket akka akka-stream akka-http
使用 Akka-Http 和 Akka-Streams 2.4 版,我如何构造一个流,使其具有一个作为 websocket 的接收器。
例如,我想要一个生成随机数的源,这些数字被过滤,假设保留偶数,然后作为接收器流向 WebSocket。
谢谢
【问题讨论】:
标签: scala websocket akka akka-stream akka-http
这段代码放入 akka http 路由将输出连续的随机数流,而不会压倒 websocket
path("randomNums") {
val src =
Source.fromIterator(() => Iterator.continually(ThreadLocalRandom.current.nextInt()))
.filter(i => i > 0 && i % 2 == 0).map(i => TextMessage(i.toString))
extractUpgradeToWebsocket { upgrade =>
complete(upgrade.handleMessagesWithSinkSource(Sink.ignore, src))
}
}
【讨论】:
upgrade => 之后的部分正在为每个新的 Websocket 连接单独调用。因此,您需要在那里动态创建一个源。查找 BroadcastHub 将一个根流拆分为 0..n 个单独的根流。 doc.akka.io/docs/akka/2.4/scala/stream/…