[feat] support client keepalive