85 lines
2.2 KiB
Go
85 lines
2.2 KiB
Go
|
|
// ************************************
|
||
|
|
// @package: websocketServer
|
||
|
|
// @description: websocket加密服务端
|
||
|
|
// @author:
|
||
|
|
// @revision history:
|
||
|
|
// @create date: 2022-02-15 16:18:45
|
||
|
|
// ************************************
|
||
|
|
package websocketServer
|
||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/gorilla/websocket"
|
||
|
|
webServer "Framework/webServer"
|
||
|
|
)
|
||
|
|
|
||
|
|
type WssServer struct {
|
||
|
|
*webServer.HttpsServer
|
||
|
|
|
||
|
|
// websocket连接管理
|
||
|
|
*connManager
|
||
|
|
}
|
||
|
|
|
||
|
|
// RegisterWebsocketHandler
|
||
|
|
// @description: 注册websocket回调
|
||
|
|
// parameter:
|
||
|
|
//
|
||
|
|
// @receiver ws:
|
||
|
|
// @path:注册的访问路径
|
||
|
|
// @handlerFuncObj:回调方法
|
||
|
|
// @configObj:Handler配置对象
|
||
|
|
//
|
||
|
|
// return:
|
||
|
|
func (wss *WssServer) RegisterWebsocketHandler(path string, eventCallback *EventCallbackFuncs, configObj *webServer.HandlerConfig) {
|
||
|
|
wss.RegisterHandlerWithUserData(path, hookHandler, configObj, &userDatas{
|
||
|
|
server: wss,
|
||
|
|
eventCallback: eventCallback,
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
// RegisterRegexWebsocketHandler
|
||
|
|
// @description: 注册正则websocket回调
|
||
|
|
// parameter:
|
||
|
|
//
|
||
|
|
// @receiver wss:
|
||
|
|
// @path:注册的正则访问路径
|
||
|
|
// @eventCallback:回调方法
|
||
|
|
// @configObj:Handler配置对象
|
||
|
|
//
|
||
|
|
// return:
|
||
|
|
func (wss *WssServer) RegisterRegexWebsocketHandler(path string, eventCallback *EventCallbackFuncs, configObj *webServer.HandlerConfig) {
|
||
|
|
wss.RegisterRegexHandlerWithUserData(path, hookHandler, configObj, &userDatas{
|
||
|
|
server: wss,
|
||
|
|
eventCallback: eventCallback,
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewWssServer(addr, certFileName, keyFileName string, isCheckIP bool) (server *WssServer) {
|
||
|
|
server = &WssServer{
|
||
|
|
HttpsServer: webServer.NewHttpsServer(addr, certFileName, keyFileName, isCheckIP),
|
||
|
|
connManager: &connManager{
|
||
|
|
upgrader: &websocket.Upgrader{},
|
||
|
|
allConns: make(map[*websocket.Conn]*Context),
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
// 开启心跳检测协程
|
||
|
|
server.connManager.heartbeatDetect()
|
||
|
|
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewHttpsServer2(addr, certFileName, keyFileName string, webServerObj webServer.IWebServer) (server *WssServer) {
|
||
|
|
server = &WssServer{
|
||
|
|
HttpsServer: webServer.NewHttpsServer2(addr, certFileName, keyFileName, webServerObj),
|
||
|
|
connManager: &connManager{
|
||
|
|
upgrader: &websocket.Upgrader{},
|
||
|
|
allConns: make(map[*websocket.Conn]*Context),
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
// 开启心跳检测协程
|
||
|
|
server.connManager.heartbeatDetect()
|
||
|
|
|
||
|
|
return
|
||
|
|
}
|