Apply .gitignore rules

This commit is contained in:
皮蛋13361098506
2025-01-06 16:21:36 +08:00
parent 1b77f62820
commit ccd2c530cf
580 changed files with 69806 additions and 0 deletions

View File

@@ -0,0 +1,113 @@
package esLogUtil
import (
"bytes"
"encoding/json"
"sync"
"time"
"github.com/elastic/go-elasticsearch/v8/esutil"
"golang.org/x/net/context"
"goutil/logUtil"
)
var (
indexMutex sync.Mutex
indexer esutil.BulkIndexer
)
func timedReindex() {
go func() {
defer func() {
if r := recover(); r != nil {
logUtil.LogUnknownError(r)
timedReindex()
time.Sleep(time.Second * 1)
}
}()
currentIndexName := getIndexName()
for {
//设置休眠
time.Sleep(time.Second * 1)
newIndexName := getIndexName()
if currentIndexName != getIndexName() {
newIndexer(newIndexName)
currentIndexName = newIndexName
}
}
}()
}
func newIndexer(newIndexName string) {
if indexer != nil {
closeIndex()
}
//wait until get the lock
indexMutex.Lock()
defer indexMutex.Unlock()
var err error
indexer, err = esutil.NewBulkIndexer(esutil.BulkIndexerConfig{
Index: getIndexName(), // The default index name
Client: esClient, // The Elasticsearch client
FlushInterval: time.Second, // The periodic flush interval
})
if err != nil {
logUtil.ErrorLog("[%s]: Creating the indexer err: %s", serverModuleName, err)
}
}
func closeIndex() {
//wait until get the lock
indexMutex.Lock()
defer indexMutex.Unlock()
if indexer == nil {
return
}
err := indexer.Close(context.Background())
if err != nil {
logUtil.ErrorLog("[%s]:Close err%s", serverModuleName, err.Error())
}
indexer = nil
}
// 批量保存到在线日志系统
// 参数:
//
// 数量
//
// 返回值:
//
// 日志列表对象
func bulkSendHandler(logObj EsLog) {
if esClient == nil || indexer == nil {
return
}
//try to get the lock in 10000 milliseconds,if cant obtain it,return false
indexMutex.Lock()
defer indexMutex.Unlock()
message, err := json.Marshal(logObj)
if err != nil {
logUtil.ErrorLog("[%s]: Marshal failed. Err:%s", serverModuleName, err)
return
}
err = indexer.Add(
context.Background(),
esutil.BulkIndexerItem{
Action: "index",
Body: bytes.NewReader(message),
})
if err != nil {
logUtil.ErrorLog("[%s]: Add data err%s", serverModuleName, err.Error())
}
}

View File

@@ -0,0 +1,73 @@
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
*/

View File

@@ -0,0 +1,82 @@
package webServer
import (
"fmt"
"net/http"
"sync"
"time"
"goutil/logUtil"
)
// Http服务器对象
type HttpServer struct {
addr string
IWebServer
server http.Server
}
func (this *HttpServer) SetAddr(addr string) {
this.addr = addr
this.server.Addr = addr
}
// 启动HttpServer
func (this *HttpServer) Start(wg *sync.WaitGroup) {
defer func() {
wg.Done()
}()
// 开启监听
msg := fmt.Sprintf("http server begins to listen on: %s...", this.addr)
fmt.Println(msg)
logUtil.InfoLog(msg)
if err := this.server.ListenAndServe(); err != nil {
panic(fmt.Sprintf("http server ListenAndServe Error:%v", err))
}
}
// 创建新的HttpServer
// isCheckIP:该属性已丢弃,可以任意赋值
func NewHttpServer(addr string, isCheckIP bool) *HttpServer {
webServerObj := NewWebServer(isCheckIP)
return &HttpServer{
addr: addr,
IWebServer: webServerObj,
server: http.Server{
Addr: addr,
Handler: webServerObj,
},
}
}
// 创建新的HttpServer
func NewHttpServer2(addr string, webServerObj IWebServer) *HttpServer {
return &HttpServer{
addr: addr,
IWebServer: webServerObj,
server: http.Server{
Addr: addr,
Handler: webServerObj,
},
}
}
// 创建新的HttpServer
// isCheckIP:该属性已丢弃,可以任意赋值
func NewHttpServer3(addr string, isCheckIP bool, readTimeout time.Duration, readHeaderTimeout time.Duration, writeTimeout time.Duration) *HttpServer {
webServerObj := NewWebServer(isCheckIP)
return &HttpServer{
addr: addr,
IWebServer: webServerObj,
server: http.Server{
Addr: addr,
Handler: webServerObj,
ReadTimeout: readTimeout,
ReadHeaderTimeout: readHeaderTimeout,
WriteTimeout: writeTimeout,
},
}
}