Jetty HTTP/2:如何设置客户端会话超时?
问题描述:
我正在尝试创建一个会话并将其重复用于每个请求。 的问题是,如果我尝试30秒后发送请求的会议createad后,我得到:Jetty HTTP/2:如何设置客户端会话超时?
Caused by: java.nio.channels.ClosedChannelException
at org.eclipse.jetty.http2.HTTP2Session$ControlEntry.succeeded
(HTTP2Session.java:1224) ~[http2-common-9.4.0.v20161208.jar:9.4.0.v20161208]
我试过这样
SSLSessionContext clientSessionContext = sslContextFactory.getSslContext().getClientSessionContext();
clientSessionContext.setSessionTimeout(60000);
但doesen't似乎工作
答
如果您使用的是HttpClient
,则客户端闲置超时可以使用HttpClient.setIdleTimeout(long)
进行设置。
如果您使用的是低级别HTTP2Client
,则可以使用HTTP2Client.setIdleTimeout(long)
设置客户端空闲超时。
两者都将控制连接/会话空闲超时,这显然是你想要的。负值将禁用空闲超时。
感谢您的回复。 我试过如下 HTTP2Client client = new HTTP2Client(); client.setIdleTimeout(-1); 但我的会话在30秒后关闭 – MyYyY
如果客户端禁用了空闲超时,则会话仍然可以由服务器关闭。如果你控制服务器,你必须调用'ServerConnector.setIdleTimeout(long)'。 – sbordet
非常感谢! 它的工作! 我在服务器端设置超时,一切看起来都不错。 – MyYyY