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 }