ziface

package
v0.0.0-...-2747672 Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2021 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IConnManager

type IConnManager interface {
	//添加连接
	Add(conn IConnection)
	//删除连接
	Remove(conn IConnection)
	//根据id查找连接
	Get(connID int64) (IConnection, error)
	//总连接个数
	Len() int
	//清除全部连接
	ClearConn()
}

连接管理

type IConnection

type IConnection interface {

	//停止连接,结束当前连接工作
	Stop()

	//获取当前连接的websocket conn
	GetWsConnection() *zsocket.Conn

	//获取当前连接的id
	GetConnID() int64

	//获取一个不重复ID
	GetSnowflakeID() int64

	//获取连接客户端的状态 ip 端口
	RemoteAddr() net.Addr

	//发送数据,将数据发送给远程客户端(无缓冲)
	SendMsg(data string)

	//发送数据,将数据发送给远程客户端(有缓冲)
	SendBuffMsg(data string)

	//发送数据,将数据发送给远程客户端(无缓冲)
	SendByteMsg(data string)

	//发送数据,将数据发送给远程客户端(有缓冲)
	SendBuffByteMsg(data []byte)

	//发送数据,系统提示信息发送给远程客户端(有缓冲)
	SendErrorMsg(error string)

	//设置连接属性
	SetProperty(key string, value interface{})

	//获取连接属性
	GetProperty(key string) (interface{}, error)

	//移除设置属性
	RemoveProperty(key string)

	//设置当前消息类型
	SetMessageType(mt int)

	//得到当前消息类型
	GetMessageType() int

	//设置加入房间
	SetJoinRooms(room string)

	//删除加入房间
	DelJoinRoomById(room string)

	//是否加入房间
	IsJoinRoom(room string) bool

	//获取加入房间
	GetJoinRooms() map[string]bool

	//是否关闭
	IsClosed() bool

	//更新心跳
	KeepAlive()
}

连接管理

type IMessage

type IMessage interface {
	GetCommand() string //获取消息command
	GetType() string
	GetData() json.RawMessage //获取消息内容
	SetCommand(string)        //获取消息命令
	SetType(string)           //获取消息命令类型
	SetData(json.RawMessage)  //获取消息数据
}

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

type IMsgHandle

type IMsgHandle interface {
	//执行对应的路由处理方法
	DoMsgHandler(request IRequest)
	//添加路由
	SetRouter(command string, ctype string, name string, router IRouter)
	//启动一个worker工作池 只能发生一次
	StartWorkerPool()
	//将消息交给taskqueue处理
	SendMsgToTaskQueue(request IRequest)
}

消息管理抽象层

type IRequest

type IRequest interface {
	//得到当前连接
	GetConnection() IConnection
	//得到请求数据
	GetData() json.RawMessage
	//获取请求的消息命令
	GetCommand() string
	//获取请求的消息命令类型
	GetType() string
}

把客户端数据包装成一个requst

type IRouter

type IRouter interface {
	//处理业务之前
	PreHandle(request IRequest)

	//处理业务
	Handle(request IRequest)

	//处理业务之后
	PostHandle(request IRequest)
}

路由接口(参考beego名字重新命名下)

type IServer

type IServer interface {
	//启动
	Start()
	//停止
	Stop()
	//运行状态
	Serve()
	//添加路由
	SetRouter(command string, ctype string, name string, router IRouter)
	//返回 连接管理
	GetConnMgr() IConnManager
	//返回 GetSnowflake管理
	GetSnowflakeMgr() ISnowflake
	//连接之前回调Serve
	SetOnConnStart(func(conn IConnection))
	//关闭之前回调
	SetOnConnStop(func(conn IConnection))
	//调用连接之前
	CallOnConnStart(conn IConnection)
	//调用关闭之前
	CallOnConnStop(conn IConnection)
	//超过最大连接回调
	SetOnMaxConn(func(Conn *zsocket.Conn))
	//超过最大连接回调
	CallOnMaxConn(conn *zsocket.Conn)
}

接口定义

type ISnowflake

type ISnowflake interface {
	NextVal() int64 //获取一个UUID
}

Snowflake管理

Jump to

Keyboard shortcuts

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