From 15580ffce9dd400f33d3bf5468db5d6e681d59de Mon Sep 17 00:00:00 2001 From: boyce <6549168@qq.com> Date: Mon, 21 Apr 2025 21:23:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Ewss=E8=AF=81=E4=B9=A6?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- network/ws_server.go | 17 +++++++++++++++-- sysmodule/netmodule/wsmodule/WSModule.go | 11 +++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) 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