diff --git a/server/imserver/player/playermgr.go b/server/imserver/player/playermgr.go index 6e870b42..d39fc87d 100644 --- a/server/imserver/player/playermgr.go +++ b/server/imserver/player/playermgr.go @@ -82,6 +82,7 @@ func (this *playerMgr) UnInit() { func (this *playerMgr) queryStatusHandle(c *gin.Context) { accountIds := strings.Split(c.DefaultQuery("accountIds", ""), ",") rspObj := new(common.UserQueryStatusRsp) + chDone := make(chan bool) f5.GetApp().RegisterMainThreadCb( func () { for _, accountId := range(accountIds) { @@ -92,10 +93,18 @@ func (this *playerMgr) queryStatusHandle(c *gin.Context) { u.Battling = q5.BoolToInt32(hum.IsBattling()) u.Online = q5.BoolToInt32(hum.IsOnline()) q5.AppendSlice(&rspObj.Users, u) - c.JSON(http.StatusOK, rspObj) + chDone <- true } } }) + for { + select { + case <-chDone: + close(chDone) + c.JSON(http.StatusOK, rspObj) + return + } + } } func (this *playerMgr) CMLogin(hdr *f5.MsgHdr, msg *cs.CMLogin) {