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  }