iface

package
v0.0.0-...-f0a9cfb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 27, 2023 License: Apache-2.0 Imports: 4 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseRouter

type BaseRouter struct{}

BaseRouter 实现router时,先嵌入这个基类,然后根据需要对这个基类的方法进行重写

func (*BaseRouter) Handle

func (br *BaseRouter) Handle(ctx context.Context, req IRequest)

func (*BaseRouter) PostHandle

func (br *BaseRouter) PostHandle(ctx context.Context, req IRequest)

func (*BaseRouter) PreHandle

func (br *BaseRouter) PreHandle(ctx context.Context, req IRequest)

PreHandle 这里之所以BaseRouter的方法都为空, 是因为有的Router不希望有PreHandle或PostHandle 所以Router全部继承BaseRouter的好处是,不需要实现PreHandle和PostHandle也可以实例化

type IConnHandler

type IConnHandler interface {
	HandleClose(*melody.Session, int, string) error
	HandleConnect(*melody.Session)
	HandleDisconnect(*melody.Session)
	HandleError(*melody.Session, error)
	HandleMessage(*melody.Session, []byte)
	HandleMessageBinary(*melody.Session, []byte)
	HandlePong(*melody.Session)
	HandleSentMessage(*melody.Session, []byte)
	HandleSentMessageBinary(*melody.Session, []byte)
	HandleRequest(w http.ResponseWriter, r *http.Request) error
	HandleRequestWithKeys(w http.ResponseWriter, r *http.Request, keys map[string]interface{}) error
	HandleHttpRequest(r *ghttp.Request)
}

IConnHandler Caller implements this interface to handle websocket connection.

type IMessage

type IMessage interface {
	GetDataLen() uint32 //获取消息数据段长度
	GetData() []byte    //获取消息内容
	GetBizType() string //获取消息内容
}

将请求的一个消息封装到message中,定义抽象层接口

type IMsgHandler

type IMsgHandler interface {
	DoMsgHandler(ctx context.Context, request IRequest)            //马上以非阻塞方式处理消息
	AddRouter(ctx context.Context, bizType string, router IRouter) //为消息添加具体的处理逻辑
	StartWorkerPool(ctx context.Context)                           //启动worker工作池
	SendMsgToTaskQueue(request IRequest) (err error)               //将消息交给TaskQueue,由worker进行处理
	HandleMsg(ctx context.Context, request IRequest)               //综合处理消息
}

IMsgHandler 消息管理抽象层

type IRequest

type IRequest interface {
	GetSession() *melody.Session                    //获取请求连接信息
	GetData() []byte                                //获取请求消息的数据
	GetBizType() string                             //获取请求的消息ID
	GetMelody() *melody.Melody                      //获取当前melody
	Get(key string) (value interface{}, exist bool) //获取当前玩家信息
}

IRequest 接口: 实际上是把客户端请求的链接信息 和 请求的数据 包装到了 Request里

type IRouter

type IRouter interface {
	PreHandle(ctx context.Context, request IRequest)  //在处理conn业务之前的钩子方法
	Handle(ctx context.Context, request IRequest)     //处理conn业务的方法
	PostHandle(ctx context.Context, request IRequest) //处理conn业务之后的钩子方法
}

type IServer

type IServer interface {
	// AddRouter 路由功能:给当前服务注册一个路由业务方法,供客户端链接处理使用
	AddRouter(ctx context.Context, bizType string, router IRouter)
}

IServer 定义服务器接口

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL