1
使用Akka-Http和Akka-Streams版本2.4我如何構造一個流,使其具有一個接收器,它是一個websocket。Akka-Http WebSocket:Akka流使用WebSocket作爲接收器
例如,我想要一個生成隨機數的源代碼,這些數字會被過濾,讓我們說保存偶數,然後作爲接收器流入WebSocket。
感謝
使用Akka-Http和Akka-Streams版本2.4我如何構造一個流,使其具有一個接收器,它是一個websocket。Akka-Http WebSocket:Akka流使用WebSocket作爲接收器
例如,我想要一個生成隨機數的源代碼,這些數字會被過濾,讓我們說保存偶數,然後作爲接收器流入WebSocket。
感謝
此代碼放入阿卡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))
}
}
十分感謝。如果我想將相同的流發送給所有連接的客戶端,我必須保留一組他們的actorRef,並在他們連接時添加他們的actorRefs。那麼當準備推送給他們的數字迭代通過集合? – Ciaran0
(免責聲明:部分猜測):對於每個新的Websocket連接分別調用'upgrade =>'之後的部分。因此,您需要動態創建源代碼。查找'BroadcastHub'將一個根流分成0..n個單獨的流。 http://doc.akka.io/docs/akka/2.4/scala/stream/stream-dynamic.html#Dynamic_fan-in_and_fan-out_with_MergeHub_and_BroadcastHub – akauppi