Documentation
¶
Overview ¶
@Title @Description @Author Wangwengang 2021/8/17 下午5:17 @Update Wangwengang 2021/8/17 下午5:17
@Title Connection interface @Description tcp websocket @Author Wangwengang 2021/8/17 下午4:22 @Update Wangwengang 2021/8/17 下午4:22
@Title @Description @Author Wangwengang 2021/8/17 下午5:23 @Update Wangwengang 2021/8/17 下午5:23
@Title @Description @Author Wangwengang 2021/8/17 下午5:12 @Update Wangwengang 2021/8/17 下午5:12
@Title @Description @Author Wangwengang 2021/8/17 下午5:13 @Update Wangwengang 2021/8/17 下午5:13
@Title @Description @Author Wangwengang 2021/8/17 下午5:12 @Update Wangwengang 2021/8/17 下午5:12
@Title @Description @Author Wangwengang 2021/8/17 下午5:14 @Update Wangwengang 2021/8/17 下午5:14
@Title @Description @Author Wangwengang 2021/8/17 下午5:15 @Update Wangwengang 2021/8/17 下午5:15
@Title @Description @Author Wangwengang 2021/8/17 下午5:07 @Update Wangwengang 2021/8/17 下午5:07
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ConnManager ¶
type ConnManager interface { Add(conn Connection) //添加链接 Remove(conn Connection) //删除连接 Get(connID uint64) (Connection, error) //利用ConnID获取链接 Len() int //获取当前连接 ClearConn() //删除并停止所有链接 }
连接管理抽象层
type Connection ¶
type Connection interface { Start() //启动连接,让当前连接开始工作 Stop() //停止连接,结束当前连接状态M Context() context.Context //返回ctx,用于用户自定义的go程获取连接退出状态 GetTcpConnection() *net.TCPConn //从当前连接获取原始的socket TCPConn GetWsConnection() *websocket.Conn // 从当前连接获取原始的websocket Conn GetConnID() uint64 //获取当前连接ID RemoteAddr() net.Addr //获取远程客户端地址信息 SendMsg(msgID uint32, data []byte) error //直接将Message数据发送数据给远程的TCP客户端(无缓冲) SendBuffMsg(msgID uint32, data []byte) error //直接将Message数据发送给远程的TCP客户端(有缓冲) SetProperty(key string, value interface{}) //设置链接属性 GetProperty(key string) (interface{}, error) //获取链接属性 RemoveProperty(key string) //移除链接属性 }
type DataPack ¶
type DataPack interface { GetHeadLen() uint32 //获取包头长度方法 Pack(msg Message) ([]byte, error) //封包方法 Unpack([]byte) (Message, error) //拆包方法 }
封包数据和拆包数据 直接面向TCP连接中的数据流,为传输数据添加头部信息,用于处理TCP粘包问题。
type MsgHandle ¶
type MsgHandle interface { DoMsgHandler(request Request) //马上以非阻塞方式处理消息 AddRouter(msgID uint32, router Router) //为消息添加具体的处理逻辑 SetRpcxRouter(router RpcxRouter) StartWorkerPool() //启动worker工作池 SendMsgToTaskQueue(request Request) //将消息交给TaskQueue,由worker进行处理 }
消息管理抽象层
type Request ¶
type Request interface { GetConnection() Connection //获取请求连接信息 GetData() []byte //获取请求消息的数据 GetMsgID() uint32 //获取请求的消息ID }
Request 接口: 实际上是把客户端请求的链接信息 和 请求的数据 包装到了 Request里
type Router ¶
type Router interface { PreHandle(request Request) //在处理conn业务之前的钩子方法 Handle(request Request) //处理conn业务的方法 PostHandle(request Request) //处理conn业务之后的钩子方法 }
路由接口, 这里面路由是 使用框架者给该链接自定的 处理业务方法 路由里的IRequest 则包含用该链接的链接信息和该链接的请求数据信息
type RpcxRouter ¶ added in v0.0.2
type RpcxRouter interface {
Handle(request Request) //处理conn业务的方法
}
type Server ¶
type Server interface { StartTcp() // 启动服务器方法 StartWebsocket() // StartWebsocket Stop() // 停止服务器方法 Serve() //开启业务服务方法 AddRouter(msgID uint32, router Router) //路由功能:给当前服务注册一个路由业务方法,供客户端链接处理使用 SetRpcxRouter(router RpcxRouter) GetConnMgr() ConnManager //得到链接管理 SetOnConnStart(func(Connection)) //设置该Server的连接创建时Hook函数 SetOnConnStop(func(Connection)) //设置该Server的连接断开时的Hook函数 CallOnConnStart(conn Connection) //调用连接OnConnStart Hook函数 CallOnConnStop(conn Connection) //调用连接OnConnStop Hook函数 Packet() Packet }
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
@Title @Description @Author Wangwengang 2021/8/17 下午5:21 @Update Wangwengang 2021/8/17 下午5:21 @Title @Description @Author Wangwengang 2021/8/17 下午5:25 @Update Wangwengang 2021/8/17 下午5:25 @Title @Description @Author Wangwengang 2021/8/17 下午5:26 @Update Wangwengang 2021/8/17 下午5:26 @Title @Description @Author Wangwengang 2021/8/17 下午5:18 @Update Wangwengang 2021/8/17 下午5:18 @Title @Description @Author Wangwengang 2021/8/17 下午5:11 @Update Wangwengang 2021/8/17 下午5:11 @Title @Description @Author Wangwengang 2021/8/17 下午9:54 @Update Wangwengang 2021/8/17 下午9:54 @Title @Description @Author Wangwengang 2021/8/17 下午9:55 @Update Wangwengang 2021/8/17 下午9:55 @Title @Description @Author Wangwengang 2021/8/17 下午5:08 @Update Wangwengang 2021/8/17 下午5:08 @Title @Description @Author Wangwengang 2021/8/17 下午4:45 @Update Wangwengang 2021/8/17 下午4:45 @Title @Description @Author Wangwengang 2021/8/19 下午11:27 @Update Wangwengang 2021/8/19 下午11:27
|
@Title @Description @Author Wangwengang 2021/8/17 下午5:21 @Update Wangwengang 2021/8/17 下午5:21 @Title @Description @Author Wangwengang 2021/8/17 下午5:25 @Update Wangwengang 2021/8/17 下午5:25 @Title @Description @Author Wangwengang 2021/8/17 下午5:26 @Update Wangwengang 2021/8/17 下午5:26 @Title @Description @Author Wangwengang 2021/8/17 下午5:18 @Update Wangwengang 2021/8/17 下午5:18 @Title @Description @Author Wangwengang 2021/8/17 下午5:11 @Update Wangwengang 2021/8/17 下午5:11 @Title @Description @Author Wangwengang 2021/8/17 下午9:54 @Update Wangwengang 2021/8/17 下午9:54 @Title @Description @Author Wangwengang 2021/8/17 下午9:55 @Update Wangwengang 2021/8/17 下午9:55 @Title @Description @Author Wangwengang 2021/8/17 下午5:08 @Update Wangwengang 2021/8/17 下午5:08 @Title @Description @Author Wangwengang 2021/8/17 下午4:45 @Update Wangwengang 2021/8/17 下午4:45 @Title @Description @Author Wangwengang 2021/8/19 下午11:27 @Update Wangwengang 2021/8/19 下午11:27 |