3.5 使用Zinx-V0.3完成应用程序
接下来我们在基于Zinx写服务器,就可以配置一个简单的路由功能了。
A) 测试基于Zinx完成的服务端应用
Server.go
package main
import (
"fmt"
"zinx/ziface"
"zinx/znet"
)
//ping test 自定义路由
type PingRouter struct {
znet.BaseRouter //一定要先基础BaseRouter
}
//Test PreHandle
func (this *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 ping ping ping error")
}
}
//Test Handle
func (this *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 ping ping error")
}
}
//Test PostHandle
func (this *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 ping ping ping error")
}
}
func main(){
//创建一个server句柄
s := znet.NewServer("[zinx V0.3]")
s.AddRouter(&PingRouter{})
//2 开启服务
s.Serve()
}我们这里自定义了一个类似Ping操作的路由,就是当客户端发送数据,我们的处理业务就是返回给客户端"ping...ping..ping..", 为了测试,当前路由也同时实现了PreHandle和PostHandle两个方法。实际上Zinx会利用模板的设计模式,依次在框架中调用PreHandle、Handle、PostHandle三个方法。
B) 启动Server.go
C) 客户端应用测试程序
和之前的Client.go一样 没有改变
D) 启动Client.go
运行结果如下:
服务端:
客户端:
现在Zinx框架已经有路由功能了,虽然说目前只能配置一个,不过不要着急,很快我们会增加配置多路由的能力。
Last updated
Was this helpful?