85 lines
1.8 KiB
Go
85 lines
1.8 KiB
Go
package znet
|
|
|
|
import (
|
|
"fmt"
|
|
"go-study/zinx/ziface"
|
|
"net"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
type PingRouter struct {
|
|
BaseRouter
|
|
}
|
|
|
|
func (pr *PingRouter) PreHandle(request ziface.IRequest) {
|
|
fmt.Println("Call Router PreHandle")
|
|
_, err := request.GetConnection().GetTCPConnection().Write([]byte("before ping...\n"))
|
|
if err != nil {
|
|
fmt.Println("call back before ping error")
|
|
}
|
|
}
|
|
|
|
func (pr *PingRouter) Handle(request ziface.IRequest) {
|
|
fmt.Println("Call PingRouter Handle")
|
|
_, err := request.GetConnection().GetTCPConnection().Write([]byte("ping...ping...ping\n"))
|
|
if err != nil {
|
|
fmt.Println("call back ping error")
|
|
}
|
|
}
|
|
|
|
func (pr *PingRouter) PostHandle(request ziface.IRequest) {
|
|
fmt.Println("Call Router PostHandle")
|
|
_, err := request.GetConnection().GetTCPConnection().Write([]byte("after ping...\n"))
|
|
if err != nil {
|
|
fmt.Println("call back after ping error")
|
|
}
|
|
}
|
|
|
|
// ClientTest 模拟客户端
|
|
func ClientTest() {
|
|
fmt.Println("Client Test... start")
|
|
// 3s 之后发起测试请求,给服务器端开启服务的机会
|
|
time.Sleep(3 * time.Second)
|
|
|
|
conn, err := net.Dial("tcp", "127.0.0.1:7777")
|
|
if err != nil {
|
|
fmt.Println("client dial err:", err)
|
|
return
|
|
}
|
|
|
|
for {
|
|
_, err := conn.Write([]byte("hello Zinx"))
|
|
if err != nil {
|
|
fmt.Println("write error:", err)
|
|
return
|
|
}
|
|
|
|
buf := make([]byte, 512)
|
|
cnt, err := conn.Read(buf)
|
|
if err != nil {
|
|
fmt.Println("read buf error:", err)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("server call back: %s, cnt = %d\n", string(buf[:cnt]), cnt)
|
|
|
|
time.Sleep(1 * time.Second)
|
|
}
|
|
}
|
|
|
|
// TestServer 服务器端测试
|
|
func TestServer(t *testing.T) {
|
|
// 创建一个 Server 句柄
|
|
s := NewServer()
|
|
|
|
// 给当前 Zinx 框架添加一个自定义的 Router
|
|
s.AddRouter(&PingRouter{})
|
|
|
|
// 启动客户端测试
|
|
go ClientTest()
|
|
|
|
// 启动服务器
|
|
s.Serve()
|
|
}
|