【发布时间】:2020-07-13 06:52:56
【问题描述】:
我目前正在通过尝试建立多个 websockets 连接来练习 Akka-http。我创建 websockets 客户端流 (sn-p) 的代码如下所示:
val webSocketFlow =
Http().webSocketClientFlow(WebSocketRequest(url), settings = customSettings)
val (upgradeResponse, closed) =
outgoing
.viaMat(webSocketFlow)(Keep.right)
.viaMat(decoder)(Keep.left)
.toMat(sink)(Keep.both)
.run()
如果我有一个网址,这目前效果很好。我很好奇如何扩展它以连接到多个 url。例如,如果我有一个不确定的 websockets 端点列表List("ws://localhost:8080/foo", "ws://localhost:8080/bar", "ws://localhost:8080/baz")。
我已经考虑为每个 URL 添加一个新流,但是如果我有很长的 websockets 端点/url 列表怎么办。然后,这变得繁琐且过于手动。我还考虑过将其包装到一个函数中,并在给定的迭代中调用每个 URL。但这也让人觉得有点过头了。
有没有办法让一个连接池全部来源于一个流(或类似的东西)?也欢迎进一步阅读。作为“不错的选择”,是否还有一种方法可以标记传入的消息以使用它们来自的 url 发出信号?
更新:为澄清起见,我只是从 websockets 读取(仅客户端),而不是发回任何消息。
【问题讨论】:
-
您是向每个 WebSocket 发送相同的内容,还是向每个 WebSocket 发送不同的消息?
-
@Tim 我已经更新了我的答案以进行澄清。我只从 websockets 阅读。所以想法是从多个 websocket 端点读取
标签: scala websocket akka akka-http