Socket.D v2.5.12

超时

</> markdown

1、几个会话相关的超时概念

超时默认值描述
::公共
idleTimeout60s连接空闲超时(尽量不要改动)
requestTimeout10s请求默认超时
streamTimeout2h消息流默认超时
::客户端
connectTimeout10s连接超时
heartbeatInterval20s心跳间隔(这个不算超时)

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();