diff --git a/common/socket/ServerEvent.go b/common/socket/ServerEvent.go index 9423b41c9..570780d19 100644 --- a/common/socket/ServerEvent.go +++ b/common/socket/ServerEvent.go @@ -22,6 +22,7 @@ func (s *Server) Boot() error { return err } // err := gnet.Run(s, s.network+"://"+s.addr, gnet.WithMulticore(s.multicore)) + glog.Debug(context.Background(), "server exits with error: %v", err) // logging.Infof("server exits with error: %v", err) return nil } @@ -36,7 +37,11 @@ func (s *Server) Stop() error { func (s *Server) OnClose(c gnet.Conn, _ error) (action gnet.Action) { atomic.AddInt64(&s.connected, -1) //logging.Infof("conn[%v] disconnected", c.RemoteAddr().String()) - v := c.Context().(*entity.ClientData) + v, ok := c.Context().(*entity.ClientData) + if !ok { + return + + } t := v.GetPlayer() if t != nil { glog.Debug(context.Background(), t.UserID, "断开连接") diff --git a/modules/base/middleware/middleware.go b/modules/base/middleware/middleware.go index 27caff8f9..b0a6f4e59 100644 --- a/modules/base/middleware/middleware.go +++ b/modules/base/middleware/middleware.go @@ -7,6 +7,7 @@ import ( "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/util/gconv" "github.com/lxzan/gws" ) @@ -41,9 +42,13 @@ func init() { if config.Config.Middleware.Log.Enable { g.Server().BindMiddleware("/admin/*", BaseLog) } - g.Server().BindHandler("/ws", func(r *ghttp.Request) { + g.Server().BindHandler("/ws/*", func(r *ghttp.Request) { + urls := r.URL.Query().Get("port") + fmt.Println(urls) + tt := new(Handler) - upgrader := gws.NewUpgrader(new(Handler), &gws.ServerOption{ + tt.port = gconv.Int(urls) + upgrader := gws.NewUpgrader(tt, &gws.ServerOption{ //CompressEnabled: true, // 在querystring里面传入用户名 diff --git a/modules/base/middleware/websocket.go b/modules/base/middleware/websocket.go index dde53a44c..6eb9e26fa 100644 --- a/modules/base/middleware/websocket.go +++ b/modules/base/middleware/websocket.go @@ -1,9 +1,16 @@ package middleware import ( - "fmt" + "bufio" + "context" + "encoding/binary" + "io" + "log" + "net" "time" + "github.com/gogf/gf/v2/os/glog" + "github.com/gogf/gf/v2/util/gconv" "github.com/lxzan/gws" ) @@ -11,10 +18,51 @@ const PingInterval = 10 * time.Second type Handler struct { gws.BuiltinEventHandler + port int + target net.Conn } func (c *Handler) OnOpen(socket *gws.Conn) { + target, err := net.Dial("tcp", "127.0.0.1:"+gconv.String(c.port)) + if err != nil { + glog.Debug(context.Background(), "连接失败") + } + c.target = target + //errChan := make(chan error, 2) + + go func(conn net.Conn, socket *gws.Conn) { + reader := bufio.NewReader(conn) + LOOP: + for { + + // select { + // default: + packlen, err := reader.Peek(4) + + if err != nil { + + break LOOP + } + + length := int32(binary.BigEndian.Uint32(packlen)) + + data := make([]byte, length) + io.ReadFull(reader, data) + + //pack_Ver := data[4] //因为包体已经解析,所以这里直接取0 + // var pack = make([]byte, length) + + socket.WriteMessage(gws.OpcodeBinary, data) + //t.event.RecvHandler(pack) + // client.OnReceiveBase(client, pack, length) + + } + }(c.target, socket) + //err = <-errChan + if err != io.EOF { + log.Println("proxy error:", err) + } } func (c *Handler) OnPing(socket *gws.Conn, payload []byte) { @@ -25,7 +73,20 @@ func (c *Handler) OnPing(socket *gws.Conn, payload []byte) { func (c *Handler) OnPong(socket *gws.Conn, payload []byte) {} func (c *Handler) OnMessage(socket *gws.Conn, gwsmessage *gws.Message) { - fmt.Println(gwsmessage.Bytes()) + if c.target != nil { + c.target.Write(gwsmessage.Bytes()) + } + //fmt.Println(gwsmessage.Bytes()) + +} + +func (c *Handler) OnClose(socket *gws.Conn, err error) { + + glog.Debug(context.Background(), "断开连接") + if c.target != nil { + c.target.Close() + + } } diff --git a/public/index.html b/public/index.html index 7dc3e795f..c056aa96a 100644 --- a/public/index.html +++ b/public/index.html @@ -23,19 +23,52 @@ flex-shrink: 0; /* 防止播放器被压缩 */ width: 100%; height: 100%; + } + :root { + --logo-display: block; /* 默认值,可以是 inline, flex, none 等 */ + --logo-width: 150px; /* Logo 宽度 */ + --logo-height: auto; /* Logo 高度,保持比例 */ +} + -
+
diff --git a/public/login/Login.swf b/public/login/Login.swf index 57ab4b5fe..411c8f565 100644 Binary files a/public/login/Login.swf and b/public/login/Login.swf differ