github.com/gogf/gf@v1.16.9/.example/net/gtcp/pkg_operations/common/gtcp_common_client.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 conn, err := gtcp.NewConn("127.0.0.1:8999") 15 if err != nil { 16 panic(err) 17 } 18 defer conn.Close() 19 // 心跳消息 20 gtimer.SetInterval(time.Second, func() { 21 if err := funcs.SendPkg(conn, "heartbeat"); err != nil { 22 panic(err) 23 } 24 }) 25 // 测试消息, 3秒后向服务端发送hello消息 26 gtimer.SetTimeout(3*time.Second, func() { 27 if err := funcs.SendPkg(conn, "hello", "My name's John!"); err != nil { 28 panic(err) 29 } 30 }) 31 for { 32 msg, err := funcs.RecvPkg(conn) 33 if err != nil { 34 if err.Error() == "EOF" { 35 glog.Println("server closed") 36 } 37 break 38 } 39 switch msg.Act { 40 case "hello": 41 onServerHello(conn, msg) 42 case "doexit": 43 onServerDoExit(conn, msg) 44 case "heartbeat": 45 onServerHeartBeat(conn, msg) 46 default: 47 glog.Errorf("invalid message: %v", msg) 48 break 49 } 50 } 51 } 52 53 func onServerHello(conn *gtcp.Conn, msg *types.Msg) { 54 glog.Printf("hello response message from [%s]: %s", conn.RemoteAddr().String(), msg.Data) 55 } 56 57 func onServerHeartBeat(conn *gtcp.Conn, msg *types.Msg) { 58 glog.Printf("heartbeat from [%s]", conn.RemoteAddr().String()) 59 } 60 61 func onServerDoExit(conn *gtcp.Conn, msg *types.Msg) { 62 glog.Printf("exit command from [%s]", conn.RemoteAddr().String()) 63 conn.Close() 64 }