我们在部署在k8s集群上的Java应用程序中使用okhttp。我们的源应用程序没有启用istio,并通过特使sidecar连接到目的地。连接链如下所示:
SRC--------
因此,实际上SRC应用程序并不是直接与DST应用程序建立连接,而是与它前面的代理建立连接。当DST应用程序关闭时,它会终止DST和特使之间的所有连接,但SRC和特使之间的连接保持打开状态。这就是为什么SRC应用程序开始收到503个错误。从SRC到DST的另一条消息也得到503,因为我们一直在重用在okhttp的连接池中建立的空闲连接。这个问题的解决方案是重新建立新的TCP连接,而不是使用连接池中的一个空闲连接。是否可以根据收到的单个HTTP 503将okhttp配置为终止整个TCP连接?
这样的办法应该行得通
import okhttp3.OkHttpClient
import okhttp3.Request
fun main() {
val client = OkHttpClient.Builder()
.eventListenerFactory(LoggingEventListener.Factory())
.addNetworkInterceptor { chain ->
chain.proceed(chain.request()).also { response ->
println(response.code)
if (response.code == 503) {
println("closing")
chain.connection()?.socket()?.close()
}
}
}
.build()
val response1 = client.newCall(Request.Builder().url("https://httpbin.org/get").build()).execute()
val response2 = client.newCall(Request.Builder().url("https://httpbin.org/status/503").build()).execute()
val response3 = client.newCall(Request.Builder().url("https://httpbin.org/get").build()).execute()
}
我正在尝试创建一个bukkit插件,当事件触发时,它将连接到tcp服务器并发送消息。 我已经掌握了基础知识,但我错过了一些东西,我不知道从这里开始。我可以看到该插件与服务器建立了连接,但随后抛出错误并且没有发送任何消息。 我正在尝试理解当事件发生时如何向tcp客户端发送字符串。为了测试,我使用了玩家移动事件。 当我启动时,我在craftbukkit服务器日志中看到以下内容: 当我与我的世界客户端连
以下是我试图实现的目标:我有一个TCP客户端,需要连接到我们的服务器应用程序,但我需要通过HTTPS进行通信。据我所知,这可以通过反向(或正向?)代理如下: 我使用以下vhost配置成功创建了一个不带SSL的代理: (我不确定这些参数中是否有任何一个是不必要的tbh) 使用该vhost,我可以像这样启动与服务器的tcp连接: 一旦我添加SSL并使用端口443,我就无法再连接了: 如果我尝试连接到此
Git 可以通过两种主要的方式在版本库之间传输数据:“哑(dumb)”协议和“智能(smart)”协议。 本节将会带你快速浏览这两种协议的运作方式。 哑协议 如果你正在架设一个基于 HTTP 协议的只读版本库,一般而言这种情况下使用的就是哑协议。 这个协议之所以被称为“哑”协议,是因为在传输过程中,服务端不需要有针对 Git 特有的代码;抓取过程是一系列 HTTP 的 GET 请求,这种情况下,客
Hprose 远程过程调用(RPC)通讯可以在任何底层网络协议上传输。例如 HTTP,TCP 或 UNIX socket。 HTTP 绑定 当 hprose 远程过程调用(RPC)工作于 HTTP 之上时,hprose 远程过程调用(RPC)的数据作为 POST 请求的 body 部分发送,以响应的 body 部分返回。 Hprose 远程过程调用(RPC) 对 HTTP 的头部(head)没有任
问题内容: 对于急躁的人: 如何改变的价值在Linux中单个连接,使用,或者这样,或者是这可能吗? 较长的脱毛: 我正在开发一个使用长时间轮询HTTP请求的应用程序。在服务器端,需要知道客户端何时关闭连接。精度并不严格,但肯定不能为15分钟。接近一分钟就可以了。 对于不熟悉此概念的用户,长轮询HTTP请求的工作方式如下: 客户端发送请求 服务器使用HTTP标头进行响应,但响应保持打开状态。使用分块
1. Homebase over TCP 1.1. 通讯协议 1.2. 连接过程 1.3. 指令 1.3.1. method:list 1.3.2. method:execute 1.3.3. method:command 1.1. 通讯协议 通讯基于 JSON-RPC 2.0,使用 TCP 短连接 成功返回 jsonrpc {string} 必须为"2.0" id {string} 必须与请求对