From 17c149e8bf7baaef33820dd9da24e055ab1cc855 Mon Sep 17 00:00:00 2001 From: azw Date: Sun, 13 Aug 2023 15:07:33 +0800 Subject: [PATCH] 1 --- server/imserver/WSPListener.go | 2 +- server/imserver/mt/IMCluster.go | 15 +++++++++++++++ server/imserver/mtb/mtb.auto_gen.go | 14 ++++++++++++-- server/imserver/playermgr.go | 13 +++++++++---- server/imserver/proto/mt.proto | 3 ++- third_party/f5 | 2 +- 6 files changed, 40 insertions(+), 9 deletions(-) diff --git a/server/imserver/WSPListener.go b/server/imserver/WSPListener.go index cbae1464..32dad261 100644 --- a/server/imserver/WSPListener.go +++ b/server/imserver/WSPListener.go @@ -21,7 +21,7 @@ type WSPListener struct { func (this *WSPListener) init() { this.ch = make(chan *f5.MsgHdr) listener, err := net.Listen("tcp", "0.0.0.0:" + - q5.ToString(mt.Table.IMCluster.GetById(0).GetListenPort())) + q5.ToString(mt.Table.IMCluster.GetListenPort())) if err != nil { } else { diff --git a/server/imserver/mt/IMCluster.go b/server/imserver/mt/IMCluster.go index e65e3a6e..416db8a4 100644 --- a/server/imserver/mt/IMCluster.go +++ b/server/imserver/mt/IMCluster.go @@ -11,4 +11,19 @@ type IMCluster struct { type IMClusterTable struct { f5.IdMetaTable[IMCluster] + selfConf *IMCluster +} + +func (this *IMCluster) Init1() { +} + +func (this *IMClusterTable) GetListenPort() int32 { + return this.selfConf.GetListenPort() +} + +func (this *IMClusterTable) PostInit1() { + this.selfConf = this.GetById(int64(f5.GetApp().GetInstanceId())) + if this.selfConf == nil { + panic("imserver集群无法读取本服配置") + } } diff --git a/server/imserver/mtb/mtb.auto_gen.go b/server/imserver/mtb/mtb.auto_gen.go index fd80e2ee..50c3efb3 100644 --- a/server/imserver/mtb/mtb.auto_gen.go +++ b/server/imserver/mtb/mtb.auto_gen.go @@ -5,6 +5,7 @@ import ( ) type IMCluster struct { + instance_id int32 listen_port int32 _flags1_ uint64 @@ -20,12 +21,20 @@ type MasterCluster struct { _flags2_ uint64 } +func (this *IMCluster) GetInstanceId() int32 { + return this.instance_id +} + +func (this *IMCluster) HasInstanceId() bool { + return (this._flags1_ & (uint64(1) << 1)) > 0 +} + func (this *IMCluster) GetListenPort() int32 { return this.listen_port } func (this *IMCluster) HasListenPort() bool { - return (this._flags1_ & (uint64(1) << 1)) > 0 + return (this._flags1_ & (uint64(1) << 2)) > 0 } func (this *MasterCluster) GetInstanceId() int32 { @@ -54,7 +63,8 @@ func (this *MasterCluster) HasListenPort() bool { func (this *IMCluster) LoadFromKv(kv map[string]interface{}) { - f5.ReadMetaTableField(&this.listen_port, "listen_port", &this._flags1_, 1, kv) + f5.ReadMetaTableField(&this.instance_id, "instance_id", &this._flags1_, 1, kv) + f5.ReadMetaTableField(&this.listen_port, "listen_port", &this._flags1_, 2, kv) } func (this *MasterCluster) LoadFromKv(kv map[string]interface{}) { diff --git a/server/imserver/playermgr.go b/server/imserver/playermgr.go index a006ae00..2b01185b 100644 --- a/server/imserver/playermgr.go +++ b/server/imserver/playermgr.go @@ -5,6 +5,7 @@ import ( "q5" "f5" "mt" + "fmt" ) type PlayerMgr struct { @@ -16,7 +17,11 @@ func (this *PlayerMgr) init() { 1000, func (e int32, args *q5.Args) { if e == q5.TIMER_EXEC_EVENT { - this.reportServerState() + mt.Table.MasterCluster.Traverse( + func (meta *mt.MasterCluster) bool { + this.reportServerState(meta.GetIp(), meta.GetListenPort()) + return true + }) } }) } @@ -31,12 +36,12 @@ func (this *PlayerMgr) CMLogin(hdr *f5.MsgHdr, msg *cs.CMLogin) { wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) } -func (this *PlayerMgr) reportServerState() { +func (this *PlayerMgr) reportServerState(masterIp string, masterPort int32) { params := map[string]string { "node_id": q5.ToString(f5.GetApp().GetNodeId()), "instance_id": q5.ToString(f5.GetApp().GetInstanceId()), "ip": "", - "port": q5.ToString(mt.Table.IMCluster.GetById(0).GetListenPort()), + "port": q5.ToString(mt.Table.IMCluster.GetListenPort()), "online_num": q5.ToString(0), "room_num": q5.ToString(0), "channel": q5.ToString(0), @@ -44,7 +49,7 @@ func (this *PlayerMgr) reportServerState() { "servicing": q5.ToString(1), } f5.GetHttpCliMgr().SendQuickChannelJsLikeRequest( - "http://192.168.100.45:7821/webapp/index.php?c=GS&a=report&", + fmt.Sprintf("http://%s:%d/webapp/index.php?c=GS&a=report&", masterIp, masterPort), params, func (rsp f5.HttpCliResponse) { f5.GetSysLog().Info(rsp.GetRawData()) diff --git a/server/imserver/proto/mt.proto b/server/imserver/proto/mt.proto index c05e0478..d8b15ed6 100644 --- a/server/imserver/proto/mt.proto +++ b/server/imserver/proto/mt.proto @@ -4,7 +4,8 @@ option go_package = ".;mt"; message IMCluster { - optional int32 listen_port = 1; + optional int32 instance_id = 1; + optional int32 listen_port = 2; } message MasterCluster diff --git a/third_party/f5 b/third_party/f5 index af8b1181..36bf9bbc 160000 --- a/third_party/f5 +++ b/third_party/f5 @@ -1 +1 @@ -Subproject commit af8b11817827dfcb4deb7fe4f8c1b5bc4edb07d0 +Subproject commit 36bf9bbc4c7fe8e66f2c194ad91781113e4a15cf