超时
1、几个会话相关的超时概念
超时 | 默认值 | 描述 |
---|---|---|
::公共 | ||
idleTimeout | 60s | 连接空闲超时(尽量不要改动) |
requestTimeout | 10s | 请求默认超时 |
streamTimeout | 2h | 消息流默认超时 |
::客户端 | ||
connectTimeout | 10s | 连接超时 |
heartbeatInterval | 20s | 心跳间隔(这个不算超时) |
2、超时详解
- idleTimeout(连接空闲超时)
idleTimeout
是给服务端用的,服务端发现客户端一段时间内,都没有消息时会自动关闭会话。而客户端会用 heartbeatInterval
配合,客户端会不断的发心跳,避免出现连接空闲超时。两者协作,确保连接的有效果。建议不要修改配置。
- requestTimeout(请求默认超时)
某一次发起请求后,一段时间内没有答复的话就会超时。以下情况,会用到“请求默认超时”
//使用 requestTimeout(请求默认超时)
session.sendAndRequest("demo", new StringEntity(""))
session.sendAndRequest("demo", new StringEntity(""), 0) //0 也可以改为具体的超时
如果默认超时不够,可以修改后面的超时参数。
- streamTimeout(消息流默认超时)
某一次发起订阅后,一段时间内没有答复的话就会超时。以下情况,会用到“消息流默认超时”
//使用 streamTimeout(消息流默认超时)
session.sendAndRequest("demo", new StringEntity(""), -1)
session.sendAndSubscribe("demo", new StringEntity(""))
session.sendAndSubscribe("demo", new StringEntity(""), 0)
如果默认超时不够,可以修改后面的超时参数。如果想让订阅永久有效?那可以改用“监听”。
- connectTimeout(连接超时)
//使用默认连接超时
SocketD.createClient(...).open();
//配置连接超时(改为 60s)
SocketD.createClient(...).config(c->c.connectTimeout(60_000)).open();