github.com/gogf/gf@v1.16.9/.example/net/gtcp/pkg_operations/common/gtcp_common_server.go (about)

     1  package main
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/gogf/gf/.example/net/gtcp/pkg_operations/common/funcs"
     7  	"github.com/gogf/gf/.example/net/gtcp/pkg_operations/common/types"
     8  	"github.com/gogf/gf/net/gtcp"
     9  	"github.com/gogf/gf/os/glog"
    10  	"github.com/gogf/gf/os/gtimer"
    11  )
    12  
    13  func main() {
    14  	gtcp.NewServer("127.0.0.1:8999", func(conn *gtcp.Conn) {
    15  		defer conn.Close()
    16  		// 测试消息, 10秒后让客户端主动退出
    17  		gtimer.SetTimeout(10*time.Second, func() {
    18  			funcs.SendPkg(conn, "doexit")
    19  		})
    20  		for {
    21  			msg, err := funcs.RecvPkg(conn)
    22  			if err != nil {
    23  				if err.Error() == "EOF" {
    24  					glog.Println("client closed")
    25  				}
    26  				break
    27  			}
    28  			switch msg.Act {
    29  			case "hello":
    30  				onClientHello(conn, msg)
    31  			case "heartbeat":
    32  				onClientHeartBeat(conn, msg)
    33  			default:
    34  				glog.Errorf("invalid message: %v", msg)
    35  				break
    36  			}
    37  		}
    38  	}).Run()
    39  }
    40  
    41  func onClientHello(conn *gtcp.Conn, msg *types.Msg) {
    42  	glog.Printf("hello message from [%s]: %s", conn.RemoteAddr().String(), msg.Data)
    43  	funcs.SendPkg(conn, msg.Act, "Nice to meet you!")
    44  }
    45  
    46  func onClientHeartBeat(conn *gtcp.Conn, msg *types.Msg) {
    47  	glog.Printf("heartbeat from [%s]", conn.RemoteAddr().String())
    48  }