package websocketServer

/*
此包是对web_server包的封装，并扩展出websocket相关功能

使用方法如下：
	初始化一个WsServer/WssServer
	server := NewWsServer(addr string, isCheckIP bool)
	或
	server := NewWssServer(addr, certFileName, keyFileName string, isCheckIP bool)

	其它调用方法见 webServer

websocket扩展方法：
	// 注册websocket回调
	server.RegisterWebsocketHandler(path string, eventCallback *eventCallbackFuncs, configObj *web_server.HandlerConfig)
	server.RegisterRegexWebsocketHandler(path string, eventCallback *eventCallbackFuncs, configObj *web_server.HandlerConfig)

	// 设置websocket配置信息（可以设置握手超时/读写缓存/是否允许跨域等）
	server.SetUpgrader(upgrader *websocket.Upgrader)

	// 获取websocket配置信息
	server.GetUpgrader() *websocket.Upgrader

	// 设置接收到Ping消息时，是否自动回复Pong信息
	server.SetAutoPong(autuPong bool)

	// 获取接收到Ping消息时，是否自动回复Pong信息
	server.GetAutoPong() bool

	// 设置心跳检测信息
	server.SetHeartbeatDetectInfo(heartbeatCloseCount int, heartbeatCycle time.Duration)

	// 获取心跳检测信息
	server.GetHeartbeatDetectInfo() (heartbeatCloseCount int, heartbeatCycle time.Duration)

	// 设置广播并发数
	server.SetBroadcastConcurrent(n int)

	// 允许新连接
	server.EnableNewConn()

	// 禁用新连接
	server.DisableNewConn()

	// 消息广播
	server.BroadcastMessage(messageType int, data []byte)

	// 关闭所有连接
	server.CloseAll()

	eventCallbackFuncs 回调：
		// websocket连接事件
		OnConnFunc func(ctx *Context)

		// websocket关闭事件
		OnCloseFunc func(ctx *Context)

		// websocket接收事件
		OnMsgFunc func(ctx *Context, msgType int, msgData []byte)

	回调参数说明：
		ctx - websocket环境，提供了以下方法：
			GetWebServerContext() *web_server.Context - 获取web_server环境
            GetUserData() interface{} - 获取用户自定义数据
            SetUserData(userData interface{}) - 设置用户自定义数据
			SendMessage(messageType int, data []byte) (err error) - 发送websocket数据
			Close() - 关闭websocket连接
		msgType - 接收到的websocket类型
		msgData - 接收到的websocket数据

	使用示例，见 wsServer_test.go
*/
