请求管理

1. 方法

type IRequest interface {
    //获取当前连接
    GetConnection() IConnection
    //获取消息数据
    GetData() []byte
    //获取ID
    GetID() uint32
    //获取数据长度
}

以上为每个请求能用到的方法,获取到的都是当前请求的数据

2. 例子

    s.On(1, func(request knet.IRequest) {
        fmt.Printf("[Router] Recv from %s, ID = %d Data = %s\n", 
                   request.GetConnection().RemoteAddr().String(), 
                   request.GetID(), request.GetData()
                  )
        request.GetConnection().Send(request.GetID(), request.GetData())
    })
    s.On(2, func(request knet.IRequest) {
        fmt.Printf("[Router] Recv from %s, ID = %d Data = %s\n", 
                   request.GetConnection().RemoteAddr().String(), 
                   request.GetID(), request.GetData()
                  )
        request.GetConnection().Send(request.GetID(), request.GetData())
    })

每当有连接进入都会产生一个Connection,以上用法将ID和路由绑定后,有数据到达服务器,服务器会通过Connection把数据整理,如果有粘包会先解包,并生成一个Request,所有的路由会通过Request计算后在指定的工作池中运行

results matching ""

    No results matching ""