module

package
v1.1.8 Latest Latest
Warning

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

Go to latest
Published: Aug 20, 2019 License: MIT Imports: 16 Imported by: 0

README

HTTP

HTTPModule 这是一个收HTTP请求的模块 实现了IModule接口 可以使用NewHTTPModule来实例化一个,需要的参数,可以自己写,也可以读配置 如果想对它进行扩展,可以用他组合一个新的类,然后自己写实例化的方法,可以借鉴NewHTTPModule 希望可以处理更多的请求分类,可以在重载完Init方法后,使用 mod.httpServer.Handler.HandleFunc 添加你自己需要的请求 因为我考虑的是这个模块一个实例化就处理一组消息,所有从这个地方进来的都走统一的逻辑 当然 你也可以按自己的实际需要分出来。 可以做到不同的请求分支有不同的消息格式。 可以自定义基础消息结构

WebSocket

WebSocketModule是一个收发WebSocket消息的管理器 每一个用户连接上来后,都会开一个新的协程进行操作。 你可以把这个连接句柄引用到你自己的用户对象上面,这样就可以在别的协程上主动的对这个用户进行发送消息 每一个连接如果在一段时间里没有收到这个用户的消息,就会主动的断开连接 每一个连接对象event.WebSocketModel都封装在这里面,里面还可以设置一个断开连接时执行的回调,可以用来做一下当连接断开时要做的事; 比如断开连接进就对用户数据进行一次保存啊或是写到缓存啊或是做卸载的准备等等

LOGIC

LogicModule 模块,是一个用户处理业务逻辑的管理器 我们可以把业务逻辑放到指定KEYID的协程上运行。 可以用这个方法保证一些逻辑是单协程执行,减少锁的使用。

SQL

SqlDataModule 模块,是一个处理数据保存的协程管理器 我们可以把指定KEYID分组的数据库操作放到同一个协程上运行。保证数据保存的顺序。 同时也做到了业务逻辑与DB操作分开进行。

Memory

这个模块用来管理内存数据,什么时候可以释放的管理器 比如,一个用户离线后,一定时间了后,就可以卸载这个用户的数据

MemoryModule.AddListenMsg 是用来添加数据到管理器,也是用来重置时间的方法 数据继承IMemoryModel接口,实现里面的所有方法 其中GetKey用来表示数据的唯一标识 RunAutoEvents,表示添加进管理器时运行的方法,如果之前已在管理器中还没有被去除就不会运行它 UnloadRun,设置的时间到了之后运行的方法,如果你确认这个数据是要被卸载的话,就返回true DoneRun,当服务器要关闭的时候,会运行的方法。可以用于关闭在RunAutoEvents里启动的协程 以上三个方法都在同一个协程运行。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HTMLHandlego

func HTMLHandlego(w http.ResponseWriter, req *http.Request)

HTMLHandlego 默认的所有没定义的处理请求

func NullHandle

func NullHandle(w http.ResponseWriter, req *http.Request)

NullHandle 默认的所有没定义的处理请求

func TimeoutRun

func TimeoutRun(et event.JsonMap, w http.ResponseWriter)

TimeoutRun 默认的超时调用

func WebSocketHTMLHandlego

func WebSocketHTMLHandlego(w http.ResponseWriter, req *http.Request)

WebSocketHTMLHandlego 默认的所有没定义的处理请求

Types

type DataThread

type DataThread struct {
	KeyID int //用户主键

	SendChan chan []event.ISqlDataModel //收要更新的数据
	Conndb   *sql.DB                    //数据库连接对象
	UpTime   time.Time                  //更新时间
	TranSave bool                       //是否用事务做保存
	// contains filtered or unexported fields
}

DataThread 用户的数据库协程

func (*DataThread) CloseChan

func (this *DataThread) CloseChan()

func (*DataThread) Handle

func (this *DataThread) Handle(ctx context.Context, mg *SqlDataModule)

Handle 保存数据的协程

func (*DataThread) Save

func (this *DataThread) Save()

Save 执行保存

func (*DataThread) Start

func (this *DataThread) Start(mg *SqlDataModule)

func (*DataThread) Stop

func (this *DataThread) Stop(mg *SqlDataModule, index int)

type HTTPConfig

type HTTPConfig struct {
	HTTPAddr string //监听地址
	Timeout  int
}

HTTPConfig httpmodule的配置

type HTTPModule

type HTTPModule struct {
	HTTPAddr string //HTTP监听的地址

	RouteFun   func(code int) event.HTTPcall                         //用来生成事件处理器的工厂
	TimeoutFun event.HTTPcall                                        //超时时的回调方法
	GetIPFun   func(w http.ResponseWriter, req *http.Request) string //拿IP的方法
	// contains filtered or unexported fields
}

HTTPModule ... http连接模块

func NewHTTPModule

func NewHTTPModule(configmd *HTTPConfig) *HTTPModule

NewHTTPModule 生成一个新的HTTP的对象

func (*HTTPModule) Handle

func (mod *HTTPModule) Handle(w http.ResponseWriter, req *http.Request)

Handle http发来的所有请求都会到这个方法来

func (*HTTPModule) Init

func (mod *HTTPModule) Init()

Init IModule接口的实现

func (*HTTPModule) PrintStatus

func (mod *HTTPModule) PrintStatus() string

PrintStatus IModule 接口实现,打印状态

func (*HTTPModule) Start

func (mod *HTTPModule) Start()

Start IModule 接口实现

func (*HTTPModule) Stop

func (mod *HTTPModule) Stop()

Stop IModule 接口实现

type IModule

type IModule interface {
	//Init 初始化
	Init()
	//Start 启动
	Start()
	//Stop 停止
	Stop()
	//PrintStatus 打印状态
	PrintStatus() string
}

IModule 模块接口

type LogicConfig

type LogicConfig struct {
	Timeout    int //超时时间(秒)
	InitNum    int //初始化内存空间
	ChanNum    int //通道缓存空间
	SubChanNum int //子通道缓存空间
}

type LogicModule

type LogicModule struct {
	// contains filtered or unexported fields
}

LogicModule 逻辑模块

func NewLogicModule

func NewLogicModule(config *LogicConfig) *LogicModule

func (*LogicModule) AddMsg

func (this *LogicModule) AddMsg(logicmd event.LogicModel)

AddMsg 发消息给逻辑协程处理

func (*LogicModule) Hander

func (this *LogicModule) Hander(ctx context.Context)

func (*LogicModule) Init

func (this *LogicModule) Init()

func (*LogicModule) PrintStatus

func (mod *LogicModule) PrintStatus() string

PrintStatus IModule 接口实现,打印状态

func (*LogicModule) Start

func (this *LogicModule) Start()

func (*LogicModule) Stop

func (this *LogicModule) Stop()

type LogicThreadModule

type LogicThreadModule struct {
	KeyID string //协程key

	UpTime time.Time //更新时间
	// contains filtered or unexported fields
}

LogicThreadModule 逻辑协程

func (*LogicThreadModule) CloseChan

func (this *LogicThreadModule) CloseChan()

func (*LogicThreadModule) Handle

func (this *LogicThreadModule) Handle(ctx context.Context, mg *LogicModule)

func (*LogicThreadModule) Start

func (this *LogicThreadModule) Start(mg *LogicModule)

func (*LogicThreadModule) Stop

func (this *LogicThreadModule) Stop(mg *LogicModule, index int)

type MemoryConfig

type MemoryConfig struct {
	RunTime int //空闲时间(秒)当这个数据这么长时间 没有被访问时就可以运行了
	InitNum int //初始化内存空间
	ChanNum int //通道缓存空间
}

MemoryConfig 内存模块配置

type MemoryModule

type MemoryModule struct {
	// contains filtered or unexported fields
}

MemoryModule 内存缓存管理器

func NewMemoryModule

func NewMemoryModule(config *MemoryConfig) *MemoryModule

func (*MemoryModule) AddListenMsg

func (this *MemoryModule) AddListenMsg(data event.IMemoryModel)

func (*MemoryModule) DelListenMsg

func (this *MemoryModule) DelListenMsg(data event.IMemoryModel)

用来主动关掉服务的方法,关掉了服务找到的关服务器的逻辑,所以不会调用UnloadRun

func (*MemoryModule) GetNum

func (this *MemoryModule) GetNum() int

GetNum 内存管理对象数量

func (*MemoryModule) Handle

func (this *MemoryModule) Handle(ctx context.Context)

func (*MemoryModule) Init

func (this *MemoryModule) Init()

Init 初始化

func (*MemoryModule) PrintStatus

func (this *MemoryModule) PrintStatus() string

PrintStatus 打印状态

func (*MemoryModule) Start

func (this *MemoryModule) Start()

Start 启动

func (*MemoryModule) Stop

func (this *MemoryModule) Stop()

Stop 停止

type MemoryThread

type MemoryThread struct {
	Key string //主键

	DataMemory event.IMemoryModel
	// contains filtered or unexported fields
}

func (*MemoryThread) Handle

func (this *MemoryThread) Handle(ctx context.Context, mg *MemoryModule)

type NsqdConfig

type NsqdConfig struct {
	Addr                []string //地址
	NSQLookupdAddr      []string //nsqlookup 地址
	ChanNum             int      //通道缓存空间
	LookupdPollInterval int      //去请求lookup nsq节点信息的时间(毫秒)
	MaxInFlight         int      //可以同时访问的节点数

}

type NsqdModule

type NsqdModule struct {
	ServerID  string //服务器
	RouteFun  event.NsqdHander
	GetNewMsg func() event.INsqdMessage //拿到消息接口对象
	// contains filtered or unexported fields
}

func NewNsqdModule

func NewNsqdModule(configmd *NsqdConfig, sid int) *NsqdModule

func (*NsqdModule) AddMsg

func (this *NsqdModule) AddMsg(msg event.INsqdMessage) bool

AddMsg 发送消息出去

func (*NsqdModule) AddMsgSync

func (this *NsqdModule) AddMsgSync(msg event.INsqdMessage) error

AddMsgSync 同步发消息出去

func (*NsqdModule) Handle

func (this *NsqdModule) Handle(ctx context.Context)

func (*NsqdModule) HandleMessage

func (this *NsqdModule) HandleMessage(message *nsq.Message) (err error)

nsq.Handler的接口

func (*NsqdModule) Init

func (this *NsqdModule) Init()

Init 初始化

func (*NsqdModule) PingNsq

func (this *NsqdModule) PingNsq(ctx context.Context) bool

func (*NsqdModule) PrintStatus

func (this *NsqdModule) PrintStatus() string

PrintStatus 打印状态

func (*NsqdModule) Start

func (this *NsqdModule) Start()

Start 启动

func (*NsqdModule) Stop

func (this *NsqdModule) Stop()

Stop 停止

func (*NsqdModule) StopConsumer

func (this *NsqdModule) StopConsumer()

StopConsumer如果要关服,需要提前关闭收消息

type SocketClientModule

type SocketClientModule struct {
}

主动连接socket模块

type SocketModule

type SocketModule struct {
}

socket监听模块

type SqlDataConfig

type SqlDataConfig struct {
	Timeout    int  //超时时间(秒)
	InitNum    int  //初始化内存空间
	ChanNum    int  //通道缓存空间
	SubChanNum int  //子通道缓存空间
	TranSave   bool //是否是事务保存
}

type SqlDataModule

type SqlDataModule struct {
	// contains filtered or unexported fields
}

SqlDataModule 数据库的模块

func NewSqlDataModule

func NewSqlDataModule(config *SqlDataConfig, sqldb *sql.DB) *SqlDataModule

func (*SqlDataModule) AddMsg

func (this *SqlDataModule) AddMsg(msg ...event.ISqlDataModel)

func (*SqlDataModule) Handle

func (this *SqlDataModule) Handle(ctx context.Context)

func (*SqlDataModule) Init

func (this *SqlDataModule) Init()

func (*SqlDataModule) PrintStatus

func (this *SqlDataModule) PrintStatus() string

PrintStatus 打印状态

func (*SqlDataModule) Start

func (this *SqlDataModule) Start()

func (*SqlDataModule) Stop

func (this *SqlDataModule) Stop()

type WebSocketConfig

type WebSocketConfig struct {
	Addr      string //websocket 监听地址
	Timeout   int    //超时时间 (秒)
	MsgMaxLen int    //一个消息最大长度B

}

WebSocketConfig websocket的配置

type WebSocketModule

type WebSocketModule struct {
	Addr string //HTTP监听的地址

	RouteFun           func(code int) event.WebSocketCall //用来生成事件处理器的工厂
	WebSocketOnlineFun func(conn *websocket.Conn) string  //连接成功后
	// contains filtered or unexported fields
}

WebSocketModule socket监听模块

func NewWSModule

func NewWSModule(configmd *WebSocketConfig) *WebSocketModule

NewWSModule 生成一个新的websocket的对象

func (*WebSocketModule) GetPlayerNum

func (mod *WebSocketModule) GetPlayerNum() int

GetPlayerNum用户连接数量

func (*WebSocketModule) Handle

func (mod *WebSocketModule) Handle(conn *websocket.Conn)

Handle http发来的所有请求都会到这个方法来

func (*WebSocketModule) Init

func (mod *WebSocketModule) Init()

Init IModule接口的实现

func (*WebSocketModule) PrintStatus

func (mod *WebSocketModule) PrintStatus() string

PrintStatus IModule 接口实现,打印状态

func (*WebSocketModule) Start

func (mod *WebSocketModule) Start()

Start IModule 接口实现

func (*WebSocketModule) Stop

func (mod *WebSocketModule) Stop()

Stop IModule 接口实现

Jump to

Keyboard shortcuts

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