diff --git a/server/hallserver/common/types.go b/server/hallserver/common/types.go index 4a5a1fe4..bd1527d1 100644 --- a/server/hallserver/common/types.go +++ b/server/hallserver/common/types.go @@ -39,6 +39,7 @@ type PlayerMgr interface { ProcessCMMsg(*cs.CsNetMsgHandler, *f5.MsgHdr) GetPlayerBySocket(f5.WspCliConn) Player GetPlayerByAccountId(string) Player + OnSocketClose(f5.WspCliConn) } type WspListener interface { diff --git a/server/hallserver/listener/handlermgr.go b/server/hallserver/listener/handlermgr.go index aac2d90d..301d90cc 100644 --- a/server/hallserver/listener/handlermgr.go +++ b/server/hallserver/listener/handlermgr.go @@ -12,8 +12,8 @@ type HandlerMgr struct { func (this *HandlerMgr) Init() { ss.RegHandlerId(int(ss.SSMessageIdE__SS_Ping), constant.WSP_LISTENER_HANDLER_ID) + ss.RegHandlerId(int(ss.SSMessageIdE__SS_WSP_SocketDisconnect), constant.WSP_LISTENER_HANDLER_ID) - ss.RegHandlerId(int(ss.SSMessageIdE__SS_WSP_SocketDisconnect), constant.PLAYER_MGR_HANDLER_ID) cs.RegHandlerId(int(cs.CMMessageIdE__CMPing), constant.PLAYER_MGR_HANDLER_ID) cs.RegHandlerId(int(cs.CMMessageIdE__CMLogin), constant.PLAYER_MGR_HANDLER_ID) cs.RegHandlerId(int(cs.CMMessageIdE__CMReconnect), constant.PLAYER_MGR_HANDLER_ID) diff --git a/server/hallserver/listener/wsplistener.go b/server/hallserver/listener/wsplistener.go index 439a8a6f..f595b535 100644 --- a/server/hallserver/listener/wsplistener.go +++ b/server/hallserver/listener/wsplistener.go @@ -43,6 +43,10 @@ func (this *WSPListener) SS_ping(hdr *f5.MsgHdr, msg *ss.SS_Ping) { this.SendProxyMsg(hdr.Conn, 0, &rspMsg) } +func (this *WSPListener) SS_WSP_SocketDisconnect(hdr *f5.MsgHdr, msg *ss.SS_WSP_SocketDisconnect) { + GetPlayerMgr().OnSocketClose(hdr.GetSocket()) +} + func (this *WSPListener) accept() { fmt.Println("accpet") for { diff --git a/server/hallserver/player/playermgr.go b/server/hallserver/player/playermgr.go index 945f1bdf..126257a1 100644 --- a/server/hallserver/player/playermgr.go +++ b/server/hallserver/player/playermgr.go @@ -12,7 +12,6 @@ import ( "mt" "net" "q5" - "ss" ) type pendingLoginRequest struct { @@ -57,7 +56,7 @@ func (this *playerMgr) Init() { } } for socket, _ := range deletedPlayers { - this.onSocketClose(socket) + this.OnSocketClose(socket) } }) } @@ -266,10 +265,6 @@ func (this *playerMgr) genSeqId() *int64 { return &reqId } -func (this *playerMgr) SS_WSP_SocketDisconnect(hdr *f5.MsgHdr, msg *ss.SS_WSP_SocketDisconnect) { - this.onSocketClose(hdr.GetSocket()) -} - func (this *playerMgr) CMReconnect(hdr *f5.MsgHdr, msg *cs.CMReconnect) { hum := this.internalGetPlayerByAccountId(msg.GetAccountId()) rspMsg := &cs.SMReconnect{} @@ -289,7 +284,7 @@ func (this *playerMgr) CMReconnect(hdr *f5.MsgHdr, msg *cs.CMReconnect) { GetWspListener().SendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) } -func (this *playerMgr) onSocketClose(conn f5.WspCliConn) { +func (this *playerMgr) OnSocketClose(conn f5.WspCliConn) { hum := this.internalGetPlayerBySocket(conn) if hum == nil { return