Documentation ¶
Index ¶
- Constants
- Variables
- func DecodeBytes(data []byte) (msg msgdef.IMsg, err error)
- func DecodeMsg(flag byte, buf []byte) (msgdef.IMsg, error)
- func DecryptData(buf []byte) []byte
- func DecryptDataByClient(buf []byte) []byte
- func EncodeMsg(msg msgdef.IMsg, buf []byte, forceNoCompress bool) ([]byte, error)
- func EncodeMsgWithEncrypt(msg msgdef.IMsg, buf []byte, forceNoCompress bool, encryptEnabled bool) ([]byte, error)
- func EncryptData(buf []byte) []byte
- func GetDecrypt_key() []byte
- func GetEncrypt_key() []byte
- func GetMsgID(buf []byte) uint16
- func NetSrvSetConfig(v *global.ListenCfg) optionF
- func NetSrvSetEnabled(v bool) optionF
- func NetSrvSetIsClient(v bool) optionF
- func NetSrvSetMaxConn(v int) optionF
- func NetSrvSetMsgHander(v *msghandler.MsgHandler) optionF
- func NetSrvSetProtocal(v ProtocalEnum) optionF
- func SetDecrypt_key(bytes []byte)
- func SetEncrypt_key(bytes []byte)
- type INetServer
- type INetSess
- type ISessCallBack
- type NetSess
- func (this *NetSess) Close()
- func (this *NetSess) DelayClose()
- func (this *NetSess) GetID() uint64
- func (this *NetSess) GetType() global.ServerTypeEnum
- func (this *NetSess) IsVerified() bool
- func (this *NetSess) RemoteAddr() string
- func (this *NetSess) Send(msg msgdef.IMsg)
- func (this *NetSess) SendBuf(data []byte)
- func (this *NetSess) SendNow(msg msgdef.IMsg)
- func (this *NetSess) SetID(v uint64)
- func (this *NetSess) SetInputMsg(v bool)
- func (this *NetSess) SetMsgHandler(msgh msghandler.IMsgHandler)
- func (this *NetSess) SetRecvMsg(v bool)
- func (this *NetSess) SetType(stype global.ServerTypeEnum)
- func (this *NetSess) SetVerify()
- func (this *NetSess) Start()
- type NetSrv
- func (this *NetSrv) GetClientSess(id uint64) (result *NetSess)
- func (this *NetSrv) GetEncryEnabled() bool
- func (this *NetSrv) GetProtocal() ProtocalEnum
- func (this *NetSrv) RangeSess(f func(sess INetSess) bool)
- func (this *NetSrv) SessClosed(sess INetSess)
- func (this *NetSrv) SessVerify(msg msgdef.ISessionVerifyReqMsg, sess INetSess) error
- func (this *NetSrv) Start() (err error)
- func (this *NetSrv) Stop()
- type ProtocalEnum
Constants ¶
View Source
const (
// MaxMsgBuffer 消息最大长度
MaxMsgBuffer = 100 * 1024
)
View Source
const (
//这是包含msgID的长度
MsgHeadSize = 6
)
Variables ¶
View Source
var ( //未知监听类型 Err_Unknown_ProtocalEnum = common.NewError("Unknown ProtocalEnum:%s") )
Functions ¶
func DecryptDataByClient ¶
DecryptDataByClient 解密算法客户端的版本
func EncodeMsgWithEncrypt ¶
func EncodeMsgWithEncrypt(msg msgdef.IMsg, buf []byte, forceNoCompress bool, encryptEnabled bool) ([]byte, error)
EncodeMsg 序列化消息
func GetDecrypt_key ¶
func GetDecrypt_key() []byte
func GetEncrypt_key ¶
func GetEncrypt_key() []byte
func NetSrvSetProtocal ¶
func NetSrvSetProtocal(v ProtocalEnum) optionF
设置监听服务类型 ProtocalEnum,默认为tcp
func SetDecrypt_key ¶
func SetDecrypt_key(bytes []byte)
func SetEncrypt_key ¶
func SetEncrypt_key(bytes []byte)
Types ¶
type INetServer ¶
type INetServer interface { //主要给INetSess调用的方法,也可以重载 ISessCallBack // //开始服务 // Start() (err error) // //结束服务 // Stop() // 遍历所有被动连接,返回false就退出遍历 RangeSess(f func(sess INetSess) bool) // 获取会话 GetClientSess(id uint64) (result *NetSess) //是否加密 GetEncryEnabled() bool //连接类型 GetProtocal() ProtocalEnum }
type INetSess ¶
type INetSess interface { //发消息 Send(msg msgdef.IMsg) //发消息二进制数据 SendBuf(data []byte) //立即发送 SendNow(msg msgdef.IMsg) //开始 Start() //关闭 只会被运行一次 Close() // 延时关闭连接 DelayClose() //设置消息路由 //一开始使用的都是service的,验证过后 //如果是用户就换成用户的 //剩下的还是使用service的 SetMsgHandler(msgh msghandler.IMsgHandler) //设置表示连接的ID,一般与上层的服务器ID或是用户ID一致 SetID(uint64) //表示连接的ID,一般与上层的服务器ID或是用户ID一致 GetID() uint64 //如果连接是服务器过来的话,那就是服务器类型,2表示客户端 GetType() global.ServerTypeEnum //设置如果连接是服务器过来的话,那就是服务器类型,2表示客户端 SetType(stype global.ServerTypeEnum) //远程地址 RemoteAddr() string //是否验证过 IsVerified() bool //设置验证过 SetVerify() }
type ISessCallBack ¶
type ISessCallBack interface { //连接被关闭的时候(这个回调会在任意协程上,所以需要注意安全) SessClosed(sess INetSess) //会话的验证回调 如果是连接客户端的上层需要重载实现验证逻辑,失败就返回错误,底层会关闭连接 SessVerify(msg msgdef.ISessionVerifyReqMsg, sess INetSess) error }
type NetSess ¶
type NetSess struct {
// contains filtered or unexported fields
}
一个连接会话
func (*NetSess) Close ¶
func (this *NetSess) Close()
关闭 只会被运行一次 关闭的逻辑需要立即运行,处理链接对应的附加逻辑。 不然如果是多链接顶替逻辑的时候,有可能出现新链接来了然后被关了的情况。 因为新链接来的时候
func (*NetSess) GetType ¶
func (this *NetSess) GetType() global.ServerTypeEnum
如果连接是服务器过来的话,那就是服务器类型,2表示客户端
func (*NetSess) SetMsgHandler ¶
func (this *NetSess) SetMsgHandler(msgh msghandler.IMsgHandler)
设置消息路由 正常情况下都是使用外部的,验证前使用管理器的,验证后使用对象的
func (*NetSess) SetType ¶
func (this *NetSess) SetType(stype global.ServerTypeEnum)
设置如果连接是服务器过来的话,那就是服务器类型,2表示客户端
type NetSrv ¶
type NetSrv struct { *msghandler.MsgHandler // contains filtered or unexported fields }
网络连接的监听器 处理监听,管理连接会话,基础的连接验证
func NewNetServer ¶
func NewNetServer(addr string, thgo *threads.ThreadGo, realPtr INetServer, opts ...optionF) (result *NetSrv)
func (*NetSrv) SessVerify ¶
func (this *NetSrv) SessVerify(msg msgdef.ISessionVerifyReqMsg, sess INetSess) error
会话的验证回调
type ProtocalEnum ¶
type ProtocalEnum = string
连接类型
const ( Protocal_Tcp ProtocalEnum = "tcp" Protocal_Kcp ProtocalEnum = "kcp" )
Click to show internal directories.
Click to hide internal directories.