diff --git a/cmd/frpc/config.go b/cmd/frpc/config.go index a26fe6af..c6b232f9 100644 --- a/cmd/frpc/config.go +++ b/cmd/frpc/config.go @@ -11,16 +11,16 @@ import ( // common config var ( - ServerAddr string = "0.0.0.0" - ServerPort int64 = 7000 - LogFile string = "./frpc.log" - LogLevel string = "warn" - LogWay string = "file" + ServerAddr string = "0.0.0.0" + ServerPort int64 = 7000 + LogFile string = "./frpc.log" + LogLevel string = "warn" + LogWay string = "file" + HeartBeatInterval int64 = 5 ) var ProxyClients map[string]*models.ProxyClient = make(map[string]*models.ProxyClient) - func LoadConf(confFile string) (err error) { var tmpStr string var ok bool @@ -56,6 +56,11 @@ func LoadConf(confFile string) (err error) { LogWay = tmpStr } + tmpStr, ok = conf.Get("common", "heartbeat_interval") + if ok { + HeartBeatInterval, _ = strconv.ParseInt(tmpStr, 10, 64) + } + // servers for name, section := range conf { if name != "common" { diff --git a/cmd/frpc/control.go b/cmd/frpc/control.go index 3bca709c..6bf417aa 100644 --- a/cmd/frpc/control.go +++ b/cmd/frpc/control.go @@ -11,10 +11,6 @@ import ( "frp/pkg/utils/log" ) -const ( - heartbeatDuration = 2 //心跳检测时间间隔,单位秒 -) - var isHeartBeatContinue bool = true func ControlProcess(cli *models.ProxyClient, wait *sync.WaitGroup) { @@ -114,7 +110,7 @@ func loginToServer(cli *models.ProxyClient) (connection *conn.Conn) { func startHeartBeat(con *conn.Conn) { isHeartBeatContinue = true for { - time.Sleep(heartbeatDuration * time.Second) + time.Sleep(time.Duration(HeartBeatInterval) * time.Second) if isHeartBeatContinue { // 把isHeartBeatContinue放在这里是为了防止SIGPIPE err := con.Write("\r\n") //log.Debug("send heart beat to server!") diff --git a/cmd/frps/config.go b/cmd/frps/config.go index feb07d50..995557ec 100644 --- a/cmd/frps/config.go +++ b/cmd/frps/config.go @@ -11,16 +11,16 @@ import ( // common config var ( - BindAddr string = "0.0.0.0" - BindPort int64 = 9527 - LogFile string = "./frps.log" - LogLevel string = "warn" - LogWay string = "file" + BindAddr string = "0.0.0.0" + BindPort int64 = 9527 + LogFile string = "./frps.log" + LogLevel string = "warn" + LogWay string = "file" + HeartBeatTimeout int64 = 30 ) var ProxyServers map[string]*models.ProxyServer = make(map[string]*models.ProxyServer) - func LoadConf(confFile string) (err error) { var tmpStr string var ok bool diff --git a/cmd/frps/control.go b/cmd/frps/control.go index d6cfaa32..04f7a965 100644 --- a/cmd/frps/control.go +++ b/cmd/frps/control.go @@ -151,7 +151,7 @@ func readControlMsgFromClient(server *models.ProxyServer, c *conn.Conn) { isContinueRead = false server.StopWaitUserConn() } - timer := time.AfterFunc(10*time.Second, f) + timer := time.AfterFunc(time.Duration(HeartBeatTimeout)*time.Second, f) defer timer.Stop() for isContinueRead { @@ -169,7 +169,7 @@ func readControlMsgFromClient(server *models.ProxyServer, c *conn.Conn) { if content == "\r\n" { log.Debug("receive hearbeat:%s", content) - timer.Reset(10 * time.Second) + timer.Reset(time.Duration(HeartBeatTimeout) * time.Second) } } } diff --git a/conf/frpc.ini b/conf/frpc.ini index d2ba710f..f9c7c11a 100644 --- a/conf/frpc.ini +++ b/conf/frpc.ini @@ -6,7 +6,9 @@ log_file = ./frpc.log # debug, info, warn, error log_level = info # file, console -log_way = file +log_way = console +# 心跳检测时间间隔,单位秒,默认为2 +heartbeat_interval = 2 # test1即为name [test1] diff --git a/conf/frps.ini b/conf/frps.ini index f6a69958..4f1cfdb7 100644 --- a/conf/frps.ini +++ b/conf/frps.ini @@ -6,7 +6,9 @@ log_file = ./frps.log # debug, info, warn, error log_level = info # file, console -log_way = file +log_way = console +# 心跳检测超时时间,单位秒,默认为30 +heartbeat_timeout = 30 # test1即为name [test1]