refactor(wscodec): 重构 WebSocket 编解码逻辑

- 将 WsCodec 结构体中的 upgraded 字段改为 Upgraded,提升代码可读性
- 移除未使用的 Isinitws 字段
- 优化了 Upgrade 方法,使用新命名的字段
- 调整了 ServerEvent 中的 OnTraffic 方法,简化了 WebSocket 消息处理逻辑
- 修改了 controller 中的 Recv 方法,增加了对 WebSocket 消息的处理支持
This commit is contained in:
2025-07-11 21:28:38 +08:00
parent 6b639b8826
commit 2d012b25dc
3 changed files with 27 additions and 23 deletions

View File

@@ -14,10 +14,13 @@ import (
"fmt"
"reflect"
"github.com/gobwas/ws"
"github.com/gobwas/ws/wsutil"
"github.com/gogf/gf/v2/os/gcmd"
"github.com/gogf/gf/v2/os/glog"
"github.com/gogf/gf/v2/util/gconv"
"github.com/lunixbochs/struc"
"github.com/panjf2000/gnet/pkg/logging"
"github.com/panjf2000/gnet/v2"
)
@@ -201,9 +204,19 @@ func Recv(c gnet.Conn, data handler.TomeeHeader) {
ret := cmdlister.Call(params)
//return core.Pack(data.Handler.UserID, data.Handler.CMD, t1, 0)
//core.Pack(c, cmd cmd.EnumCommandID, data any, iserror uint32)
_, err = c.Write(ret[0].Interface().([]byte))
if err != nil {
fmt.Println(err)
if c.Context().(*entity.ClientData).Getwsmsg().Upgraded {
// This is the echo server
err = wsutil.WriteServerMessage(c, ws.OpBinary, ret[0].Interface().([]byte))
if err != nil {
logging.Infof("conn[%v] [err=%v]", c.RemoteAddr().String(), err.Error())
return
}
} else {
_, err = c.Write(ret[0].Interface().([]byte))
if err != nil {
fmt.Println(err)
}
}
}