Socket.D v2.5.12

心跳

</> markdown

心跳是在客户端连接成功之后,由客户端定时发起的一个消息包。过程为:

  • 客户端发送 Ping 消息包
  • 服务端收到后,会回发一个 Pong 消息包

如果某一端长久没有收到消息包(心跳是最小单位的消息包),则会触发闲置超时:idleTimeout(默认为 60s)

1、心跳间隔配置(单位毫秒)

更多配置参考“配置类”

ClientSession session = SocketD.createClient("sd:ws://127.0.0.1:8602")
        .config(c->c.heartbeatInterval(20_000))  //比如改成 20s(建议不要改)
        .open();

2、自定义心跳处理(一般,没必要)

使用 heartbeatHandler 配置,可以定制心跳处理(替换默认处理)。定制时,一定要发出消息包

  • 比如,添加日志
ClientSession session = SocketD.createClient("sd:ws://127.0.0.1:8602")
        .config(c->c.heartbeatHandler(s->{
            s.sendPing();
            System.out.println("xxx");
        })) 
        .open();
  • 比如,用业务消息包替代心跳包
ClientSession session = SocketD.createClient("sd:ws://127.0.0.1:8602")
        .config(c->c.heartbeatHandler(s->{
            session.send("/ping", new StringEntity("test"));
        })) 
        .open();