【发布时间】:2021-06-19 05:06:43
【问题描述】:
所以我正在创建一个分布式键值数据存储并有一个代理来管理/查询。
这是我的客户:
val client = HttpClient(CIO) {
install(WebSockets)
}
runBlocking {
client.ws(
method = HttpMethod.Get,
host = ip,
port = port,
path = "/thepath"
) {
...
}
}
client.close()
到目前为止,我只能将一台服务器连接到客户端(显然是上面的代码)。
我尝试的是创建一个包含所有可用服务器的数组,然后随机选择一个并与代理(客户端)一起工作。但这仅适用于已连接的服务器,其他服务器应等到连接关闭。
val clients: Array<HttpClient?> = arrayOfNulls(replicationFactor)
for (i in 0 until replicationFactor) {
clients[i] = HttpClient(CIO) {
install(WebSockets)
}
}
runBlocking {
clients[0]?.ws(
method = HttpMethod.Get,
host = "some ip",
port = the_port,
path = "/thepath"
) {
....
}
...
...
}
关于如何解决这个问题的任何想法?也许我可以在单独的线程上保持与每个服务器的连接。
【问题讨论】: