From e2ac9b3814cfbc6962f5d41317ae90047c51950e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 10 Aug 2023 22:18:38 +0800 Subject: [PATCH] 1 --- server/imserver/WSPListener.go | 40 +++++++++++++++++++++++++++++-- server/imserver/cs/cs.generate.go | 4 ++++ server/imserver/playermgr.go | 3 ++- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/server/imserver/WSPListener.go b/server/imserver/WSPListener.go index cf5042eb..70b97f3a 100644 --- a/server/imserver/WSPListener.go +++ b/server/imserver/WSPListener.go @@ -7,11 +7,14 @@ import ( "q5" "f5" "cs" + + proto "github.com/golang/protobuf/proto" ) type WSPListener_ struct { listener net.Listener ch <-chan *q5.MsgHdr + msgList q5.ListHead } var WSPListener = new (WSPListener_) @@ -43,13 +46,15 @@ func (this *WSPListener_) accept() { } /* - struct PackHead + struct WSProxyPackHead_C { unsigned short packlen; unsigned short msgid; unsigned int seqid; unsigned short magic_code; - unsigned short ext_len; + + unsigned short socket_handle; + unsigned long ip_saddr; }; */ func (this *WSPListener_) socketRead(conn net.Conn) { @@ -93,3 +98,34 @@ func (this *WSPListener_) parseNetPkt() { } } } + +/* + struct WSProxyPackHead_S + { + unsigned short packlen; + unsigned short msgid; + unsigned int seqid; + unsigned short magic_code; + unsigned short rpc_error_code; + + unsigned short socket_handle; + unsigned short ext_len; + }; +*/ +func (this *WSPListener_) sendProxyMsg(conn net.Conn, socketHandle uint16, msg proto.Message) { + netMsg := msg.(q5.NetMsg) + msgId := netMsg.GetNetMsgId() + msgData, err := proto.Marshal(msg) + if err != nil { + return + } + buff := make([]byte, len(msgData) + 12) + buff[0] = byte(len(msgData) & 0xFF) + buff[1] = byte(len(msgData) & 0xFFFF >> 16) + buff[2] = byte(msgId & 0xFF) + buff[3] = byte(msgId >> 16) + buff[9] = byte(socketHandle & 0xFF) + buff[10] = byte(socketHandle >> 16) + copy(msgData[:], buff[12:]) + conn.Write(buff) +} diff --git a/server/imserver/cs/cs.generate.go b/server/imserver/cs/cs.generate.go index 93b9d765..7a6d7c06 100644 --- a/server/imserver/cs/cs.generate.go +++ b/server/imserver/cs/cs.generate.go @@ -64,3 +64,7 @@ func init() { }, }; } + +func (x *CMLogin) GetNetMsgId() uint16 { + return uint16(CMMessageIdE__CMLogin); +} diff --git a/server/imserver/playermgr.go b/server/imserver/playermgr.go index 041ee127..2f462aa3 100644 --- a/server/imserver/playermgr.go +++ b/server/imserver/playermgr.go @@ -12,5 +12,6 @@ type PlayerMgr_ struct { var PlayerMgr = new (PlayerMgr_) func (this *PlayerMgr_) CMLogin(hdr *q5.MsgHdr, msg *cs.CMLogin) { - rspMsg := cs.SMLogin{} + rspMsg := &cs.SMLogin{} + WSPListener.sendProxyMsg(hdr.Conn, 0, rspMsg) }