Browse Source

(1)新增心跳检测发送间隔和超时时间的配置

Hurricanezwf 9 years ago
parent
commit
04c26d1c31
6 changed files with 26 additions and 21 deletions
  1. 11 6
      cmd/frpc/config.go
  2. 1 5
      cmd/frpc/control.go
  3. 6 6
      cmd/frps/config.go
  4. 2 2
      cmd/frps/control.go
  5. 3 1
      conf/frpc.ini
  6. 3 1
      conf/frps.ini

+ 11 - 6
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" {

+ 1 - 5
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!")

+ 6 - 6
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

+ 2 - 2
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)
 		}
 	}
 }

+ 3 - 1
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]

+ 3 - 1
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]