diff --git a/network/ws_server.go b/network/ws_server.go index f17c74c..e17494f 100644 --- a/network/ws_server.go +++ b/network/ws_server.go @@ -73,9 +73,22 @@ func (handler *WSHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } handler.conns[conn] = struct{}{} handler.mutexConns.Unlock() + c,ok:=conn.NetConn().(*net.TCPConn) + if !ok { + tlsConn,ok := conn.NetConn().(*tls.Conn) + if !ok { + log.Error("conn error") + return + } + c,ok = tlsConn.NetConn().(*net.TCPConn) + if !ok { + log.Error("conn error") + return + } + } - conn.UnderlyingConn().(*net.TCPConn).SetLinger(0) - conn.UnderlyingConn().(*net.TCPConn).SetNoDelay(true) + c.SetLinger(0) + c.SetNoDelay(true) wsConn := newWSConn(conn, r.Header, handler.pendingWriteNum, handler.maxMsgLen, handler.messageType) agent := handler.newAgent(wsConn) agent.Run() diff --git a/sysmodule/netmodule/wsmodule/WSModule.go b/sysmodule/netmodule/wsmodule/WSModule.go index 561f422..df54451 100644 --- a/sysmodule/netmodule/wsmodule/WSModule.go +++ b/sysmodule/netmodule/wsmodule/WSModule.go @@ -34,6 +34,8 @@ type WSCfg struct { PendingWriteNum int MaxMsgLen uint32 LittleEndian bool //是否小端序 + KeyFile string + CertFile string } type WSPackType int8 @@ -62,13 +64,18 @@ func (ws *WSModule) OnInit() error { ws.WSServer.MaxMsgLen = ws.wsCfg.MaxMsgLen ws.WSServer.Addr = ws.wsCfg.ListenAddr - //3.设置解析处理器 + if ws.wsCfg.KeyFile != "" && ws.wsCfg.CertFile != "" { + ws.WSServer.KeyFile = ws.wsCfg.KeyFile + ws.WSServer.CertFile = ws.wsCfg.CertFile + } + + // 设置解析处理器 ws.process.SetByteOrder(ws.wsCfg.LittleEndian) ws.mapClient = make(map[string]*WSClient, ws.WSServer.MaxConnNum) ws.WSServer.NewAgent = ws.NewWSClient - //4.设置网络事件处理 + // 设置网络事件处理 ws.GetEventProcessor().RegEventReceiverFunc(event.Sys_Event_WebSocket, ws.GetEventHandler(), ws.wsEventHandler) return nil