Merge remote-tracking branch 'origin/v2.3.0release' into v2.3.0release

This commit is contained in:
Gordon 2022-12-06 22:42:48 +08:00
commit e6136cac08
9 changed files with 124 additions and 100 deletions

View File

@ -9,7 +9,7 @@ import (
"time" "time"
) )
func callbackUserOnline(operationID, userID string, platformID int, token string, isAppBackgroundStatusChanged bool) cbApi.CommonCallbackResp { func callbackUserOnline(operationID, userID string, platformID int, token string, isAppBackground bool, connID string) cbApi.CommonCallbackResp {
callbackResp := cbApi.CommonCallbackResp{OperationID: operationID} callbackResp := cbApi.CommonCallbackResp{OperationID: operationID}
if !config.Config.Callback.CallbackUserOnline.Enable { if !config.Config.Callback.CallbackUserOnline.Enable {
return callbackResp return callbackResp
@ -25,8 +25,9 @@ func callbackUserOnline(operationID, userID string, platformID int, token string
}, },
UserID: userID, UserID: userID,
}, },
Seq: int(time.Now().UnixNano() / 1e6), Seq: int(time.Now().UnixNano() / 1e6),
IsAppBackgroundStatusChanged: isAppBackgroundStatusChanged, IsAppBackground: isAppBackground,
ConnID: connID,
} }
callbackUserOnlineResp := &cbApi.CallbackUserOnlineResp{CommonCallbackResp: &callbackResp} callbackUserOnlineResp := &cbApi.CallbackUserOnlineResp{CommonCallbackResp: &callbackResp}
if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserOnlineCommand, callbackUserOnlineReq, callbackUserOnlineResp, config.Config.Callback.CallbackUserOnline.CallbackTimeOut); err != nil { if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserOnlineCommand, callbackUserOnlineReq, callbackUserOnlineResp, config.Config.Callback.CallbackUserOnline.CallbackTimeOut); err != nil {
@ -36,7 +37,7 @@ func callbackUserOnline(operationID, userID string, platformID int, token string
return callbackResp return callbackResp
} }
func callbackUserOffline(operationID, userID string, platformID int, isAppBackgroundStatusChanged bool) cbApi.CommonCallbackResp { func callbackUserOffline(operationID, userID string, platformID int, connID string) cbApi.CommonCallbackResp {
callbackResp := cbApi.CommonCallbackResp{OperationID: operationID} callbackResp := cbApi.CommonCallbackResp{OperationID: operationID}
if !config.Config.Callback.CallbackUserOffline.Enable { if !config.Config.Callback.CallbackUserOffline.Enable {
return callbackResp return callbackResp
@ -51,8 +52,8 @@ func callbackUserOffline(operationID, userID string, platformID int, isAppBackgr
}, },
UserID: userID, UserID: userID,
}, },
Seq: int(time.Now().UnixNano() / 1e6), Seq: int(time.Now().UnixNano() / 1e6),
IsAppBackgroundStatusChanged: isAppBackgroundStatusChanged, ConnID: connID,
} }
callbackUserOfflineResp := &cbApi.CallbackUserOfflineResp{CommonCallbackResp: &callbackResp} callbackUserOfflineResp := &cbApi.CallbackUserOfflineResp{CommonCallbackResp: &callbackResp}
if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserOfflineCommand, callbackOfflineReq, callbackUserOfflineResp, config.Config.Callback.CallbackUserOffline.CallbackTimeOut); err != nil { if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserOfflineCommand, callbackOfflineReq, callbackUserOfflineResp, config.Config.Callback.CallbackUserOffline.CallbackTimeOut); err != nil {

View File

@ -406,18 +406,10 @@ func (ws *WServer) setUserDeviceBackground(conn *UserConn, m *Req) {
if isPass { if isPass {
req := pData.(*sdk_ws.SetAppBackgroundStatusReq) req := pData.(*sdk_ws.SetAppBackgroundStatusReq)
conn.IsBackground = req.IsBackground conn.IsBackground = req.IsBackground
if !conn.IsBackground { callbackResp := callbackUserOnline(m.OperationID, conn.userID, int(conn.PlatformID), conn.token, conn.IsBackground, conn.connID)
callbackResp := callbackUserOnline(m.OperationID, conn.userID, int(conn.PlatformID), conn.token, true) if callbackResp.ErrCode != 0 {
if callbackResp.ErrCode != 0 { log.NewError(m.OperationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp)
log.NewError(m.OperationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp)
}
} else {
callbackResp := callbackUserOffline(m.OperationID, conn.userID, int(conn.PlatformID), true)
if callbackResp.ErrCode != 0 {
log.NewError(m.OperationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp)
}
} }
log.NewInfo(m.OperationID, "SetUserDeviceBackground", "success", *conn, req.IsBackground) log.NewInfo(m.OperationID, "SetUserDeviceBackground", "success", *conn, req.IsBackground)
} }
ws.setUserDeviceBackgroundResp(conn, m, errCode, errMsg) ws.setUserDeviceBackgroundResp(conn, m, errCode, errMsg)

View File

@ -159,6 +159,8 @@ func (r *RPCServer) GetUsersOnlineStatus(_ context.Context, req *pbRelay.GetUser
ps := new(pbRelay.GetUsersOnlineStatusResp_SuccessDetail) ps := new(pbRelay.GetUsersOnlineStatusResp_SuccessDetail)
ps.Platform = constant.PlatformIDToName(platform) ps.Platform = constant.PlatformIDToName(platform)
ps.Status = constant.OnlineStatus ps.Status = constant.OnlineStatus
ps.ConnID = userConn.connID
ps.IsBackground = userConn.IsBackground
temp.Status = constant.OnlineStatus temp.Status = constant.OnlineStatus
temp.DetailPlatformStatus = append(temp.DetailPlatformStatus, ps) temp.DetailPlatformStatus = append(temp.DetailPlatformStatus, ps)
} }

View File

@ -15,6 +15,7 @@ import (
"context" "context"
"encoding/gob" "encoding/gob"
"io/ioutil" "io/ioutil"
"strconv"
"strings" "strings"
go_redis "github.com/go-redis/redis/v8" go_redis "github.com/go-redis/redis/v8"
@ -37,6 +38,7 @@ type UserConn struct {
userID string userID string
IsBackground bool IsBackground bool
token string token string
connID string
} }
type WServer struct { type WServer struct {
@ -82,9 +84,9 @@ func (ws *WServer) wsHandler(w http.ResponseWriter, r *http.Request) {
log.Error(operationID, "upgrade http conn err", err.Error(), query) log.Error(operationID, "upgrade http conn err", err.Error(), query)
return return
} else { } else {
newConn := &UserConn{conn, new(sync.Mutex), utils.StringToInt32(query["platformID"][0]), 0, compression, query["sendID"][0], false, query["token"][0]} newConn := &UserConn{conn, new(sync.Mutex), utils.StringToInt32(query["platformID"][0]), 0, compression, query["sendID"][0], false, query["token"][0], conn.RemoteAddr().String() + "_" + strconv.Itoa(int(utils.GetCurrentTimestampByMill()))}
userCount++ userCount++
ws.addUserConn(query["sendID"][0], utils.StringToInt(query["platformID"][0]), newConn, query["token"][0], operationID) ws.addUserConn(query["sendID"][0], utils.StringToInt(query["platformID"][0]), newConn, query["token"][0], newConn.connID, operationID)
go ws.readMsg(newConn) go ws.readMsg(newConn)
} }
} else { } else {
@ -319,11 +321,11 @@ func (ws *WServer) sendKickMsg(oldConn *UserConn) {
} }
} }
func (ws *WServer) addUserConn(uid string, platformID int, conn *UserConn, token string, operationID string) { func (ws *WServer) addUserConn(uid string, platformID int, conn *UserConn, token string, connID, operationID string) {
rwLock.Lock() rwLock.Lock()
defer rwLock.Unlock() defer rwLock.Unlock()
log.Info(operationID, utils.GetSelfFuncName(), " args: ", uid, platformID, conn, token, "ip: ", conn.RemoteAddr().String()) log.Info(operationID, utils.GetSelfFuncName(), " args: ", uid, platformID, conn, token, "ip: ", conn.RemoteAddr().String())
callbackResp := callbackUserOnline(operationID, uid, platformID, token, false) callbackResp := callbackUserOnline(operationID, uid, platformID, token, false, connID)
if callbackResp.ErrCode != 0 { if callbackResp.ErrCode != 0 {
log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOnline resp:", callbackResp) log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOnline resp:", callbackResp)
} }
@ -386,7 +388,7 @@ func (ws *WServer) delUserConn(conn *UserConn) {
if err != nil { if err != nil {
log.Error(operationID, " close err", "", "uid", uid, "platform", platform) log.Error(operationID, " close err", "", "uid", uid, "platform", platform)
} }
callbackResp := callbackUserOffline(operationID, conn.userID, platform, false) callbackResp := callbackUserOffline(operationID, conn.userID, platform, conn.connID)
if callbackResp.ErrCode != 0 { if callbackResp.ErrCode != 0 {
log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp) log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp)
} }

View File

@ -2,9 +2,10 @@ package call_back_struct
type CallbackUserOnlineReq struct { type CallbackUserOnlineReq struct {
UserStatusCallbackReq UserStatusCallbackReq
Token string `json:"token"` Token string `json:"token"`
Seq int `json:"seq"` Seq int `json:"seq"`
IsAppBackgroundStatusChanged bool `json:"isAppBackgroundStatusChanged"` IsAppBackground bool `json:"isAppBackground"`
ConnID string `json:"connID"`
} }
type CallbackUserOnlineResp struct { type CallbackUserOnlineResp struct {
@ -13,8 +14,8 @@ type CallbackUserOnlineResp struct {
type CallbackUserOfflineReq struct { type CallbackUserOfflineReq struct {
UserStatusCallbackReq UserStatusCallbackReq
Seq int `json:"seq"` Seq int `json:"seq"`
IsAppBackgroundStatusChanged bool `json:"isAppBackgroundStatusChanged"` ConnID string `json:"connID"`
} }
type CallbackUserOfflineResp struct { type CallbackUserOfflineResp struct {

View File

@ -69,7 +69,7 @@ const (
ConversationOptChangeNotification = 1300 // change conversation opt ConversationOptChangeNotification = 1300 // change conversation opt
UserNotificationBegin = 1301 UserNotificationBegin = 1301
UserInfoUpdatedNotification = 1303 //SetSelfInfoTip = 204 UserInfoUpdatedNotification = 1303 //SetSelfInfoTip = 204
UserNotificationEnd = 1399 UserNotificationEnd = 1399
OANotification = 1400 OANotification = 1400

View File

@ -25,7 +25,7 @@ type ExtendMsgSet struct {
} }
type ReactionExtendMsgSet struct { type ReactionExtendMsgSet struct {
TypeKey string `bson:"type_key" json:"typeKey"` UserKey string `bson:"user_key" json:"userKey"`
Value string `bson:"value" json:"value"` Value string `bson:"value" json:"value"`
} }
@ -82,13 +82,20 @@ func (d *DataBases) InsertExtendMsg(ID string, index int32, msg *ExtendMsg) (msg
return set.ExtendMsgNum, err return set.ExtendMsgNum, err
} }
func (d *DataBases) UpdateOneExtendMsgSet(ID string, index, MsgIndex int32, msg *ExtendMsg, msgSet *ExtendMsgSet) error { func (d *DataBases) UpdateOneExtendMsgSet(ID string, index, MsgIndex int32, userIndex string, value string) error {
ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second)
c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cExtendMsgSet) c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cExtendMsgSet)
_, err := c.UpdateOne(ctx, bson.M{"uid": GetExtendMsgSetID(ID, index)}, bson.M{}) _, err := c.UpdateOne(ctx, bson.M{"uid": GetExtendMsgSetID(ID, index)}, bson.M{})
return err return err
} }
func (d *DataBases) DelOneExtendMsgSetUserKey(ID string, index, MsgIndex int32, userIndex string, userID string) error {
ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second)
c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cExtendMsgSet)
_, err := c.DeleteOne(ctx, bson.M{"uid": GetExtendMsgSetID(ID, index)})
return err
}
func (d *DataBases) GetExtendMsgList(ID string, index, msgStartIndex, msgEndIndex int32) (extendMsgList []*ExtendMsg, err error) { func (d *DataBases) GetExtendMsgList(ID string, index, msgStartIndex, msgEndIndex int32) (extendMsgList []*ExtendMsg, err error) {
ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second)
c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cExtendMsgSet) c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cExtendMsgSet)

View File

@ -37,7 +37,7 @@ func (m *OnlinePushMsgReq) Reset() { *m = OnlinePushMsgReq{} }
func (m *OnlinePushMsgReq) String() string { return proto.CompactTextString(m) } func (m *OnlinePushMsgReq) String() string { return proto.CompactTextString(m) }
func (*OnlinePushMsgReq) ProtoMessage() {} func (*OnlinePushMsgReq) ProtoMessage() {}
func (*OnlinePushMsgReq) Descriptor() ([]byte, []int) { func (*OnlinePushMsgReq) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{0} return fileDescriptor_relay_fe7346d2191b0ff8, []int{0}
} }
func (m *OnlinePushMsgReq) XXX_Unmarshal(b []byte) error { func (m *OnlinePushMsgReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OnlinePushMsgReq.Unmarshal(m, b) return xxx_messageInfo_OnlinePushMsgReq.Unmarshal(m, b)
@ -89,7 +89,7 @@ func (m *OnlinePushMsgResp) Reset() { *m = OnlinePushMsgResp{} }
func (m *OnlinePushMsgResp) String() string { return proto.CompactTextString(m) } func (m *OnlinePushMsgResp) String() string { return proto.CompactTextString(m) }
func (*OnlinePushMsgResp) ProtoMessage() {} func (*OnlinePushMsgResp) ProtoMessage() {}
func (*OnlinePushMsgResp) Descriptor() ([]byte, []int) { func (*OnlinePushMsgResp) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{1} return fileDescriptor_relay_fe7346d2191b0ff8, []int{1}
} }
func (m *OnlinePushMsgResp) XXX_Unmarshal(b []byte) error { func (m *OnlinePushMsgResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OnlinePushMsgResp.Unmarshal(m, b) return xxx_messageInfo_OnlinePushMsgResp.Unmarshal(m, b)
@ -129,7 +129,7 @@ func (m *SingelMsgToUserResultList) Reset() { *m = SingelMsgToUserResult
func (m *SingelMsgToUserResultList) String() string { return proto.CompactTextString(m) } func (m *SingelMsgToUserResultList) String() string { return proto.CompactTextString(m) }
func (*SingelMsgToUserResultList) ProtoMessage() {} func (*SingelMsgToUserResultList) ProtoMessage() {}
func (*SingelMsgToUserResultList) Descriptor() ([]byte, []int) { func (*SingelMsgToUserResultList) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{2} return fileDescriptor_relay_fe7346d2191b0ff8, []int{2}
} }
func (m *SingelMsgToUserResultList) XXX_Unmarshal(b []byte) error { func (m *SingelMsgToUserResultList) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SingelMsgToUserResultList.Unmarshal(m, b) return xxx_messageInfo_SingelMsgToUserResultList.Unmarshal(m, b)
@ -183,7 +183,7 @@ func (m *OnlineBatchPushOneMsgReq) Reset() { *m = OnlineBatchPushOneMsgR
func (m *OnlineBatchPushOneMsgReq) String() string { return proto.CompactTextString(m) } func (m *OnlineBatchPushOneMsgReq) String() string { return proto.CompactTextString(m) }
func (*OnlineBatchPushOneMsgReq) ProtoMessage() {} func (*OnlineBatchPushOneMsgReq) ProtoMessage() {}
func (*OnlineBatchPushOneMsgReq) Descriptor() ([]byte, []int) { func (*OnlineBatchPushOneMsgReq) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{3} return fileDescriptor_relay_fe7346d2191b0ff8, []int{3}
} }
func (m *OnlineBatchPushOneMsgReq) XXX_Unmarshal(b []byte) error { func (m *OnlineBatchPushOneMsgReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OnlineBatchPushOneMsgReq.Unmarshal(m, b) return xxx_messageInfo_OnlineBatchPushOneMsgReq.Unmarshal(m, b)
@ -235,7 +235,7 @@ func (m *OnlineBatchPushOneMsgResp) Reset() { *m = OnlineBatchPushOneMsg
func (m *OnlineBatchPushOneMsgResp) String() string { return proto.CompactTextString(m) } func (m *OnlineBatchPushOneMsgResp) String() string { return proto.CompactTextString(m) }
func (*OnlineBatchPushOneMsgResp) ProtoMessage() {} func (*OnlineBatchPushOneMsgResp) ProtoMessage() {}
func (*OnlineBatchPushOneMsgResp) Descriptor() ([]byte, []int) { func (*OnlineBatchPushOneMsgResp) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{4} return fileDescriptor_relay_fe7346d2191b0ff8, []int{4}
} }
func (m *OnlineBatchPushOneMsgResp) XXX_Unmarshal(b []byte) error { func (m *OnlineBatchPushOneMsgResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OnlineBatchPushOneMsgResp.Unmarshal(m, b) return xxx_messageInfo_OnlineBatchPushOneMsgResp.Unmarshal(m, b)
@ -275,7 +275,7 @@ func (m *SingleMsgToUserPlatform) Reset() { *m = SingleMsgToUserPlatform
func (m *SingleMsgToUserPlatform) String() string { return proto.CompactTextString(m) } func (m *SingleMsgToUserPlatform) String() string { return proto.CompactTextString(m) }
func (*SingleMsgToUserPlatform) ProtoMessage() {} func (*SingleMsgToUserPlatform) ProtoMessage() {}
func (*SingleMsgToUserPlatform) Descriptor() ([]byte, []int) { func (*SingleMsgToUserPlatform) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{5} return fileDescriptor_relay_fe7346d2191b0ff8, []int{5}
} }
func (m *SingleMsgToUserPlatform) XXX_Unmarshal(b []byte) error { func (m *SingleMsgToUserPlatform) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SingleMsgToUserPlatform.Unmarshal(m, b) return xxx_messageInfo_SingleMsgToUserPlatform.Unmarshal(m, b)
@ -329,7 +329,7 @@ func (m *GetUsersOnlineStatusReq) Reset() { *m = GetUsersOnlineStatusReq
func (m *GetUsersOnlineStatusReq) String() string { return proto.CompactTextString(m) } func (m *GetUsersOnlineStatusReq) String() string { return proto.CompactTextString(m) }
func (*GetUsersOnlineStatusReq) ProtoMessage() {} func (*GetUsersOnlineStatusReq) ProtoMessage() {}
func (*GetUsersOnlineStatusReq) Descriptor() ([]byte, []int) { func (*GetUsersOnlineStatusReq) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{6} return fileDescriptor_relay_fe7346d2191b0ff8, []int{6}
} }
func (m *GetUsersOnlineStatusReq) XXX_Unmarshal(b []byte) error { func (m *GetUsersOnlineStatusReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUsersOnlineStatusReq.Unmarshal(m, b) return xxx_messageInfo_GetUsersOnlineStatusReq.Unmarshal(m, b)
@ -384,7 +384,7 @@ func (m *GetUsersOnlineStatusResp) Reset() { *m = GetUsersOnlineStatusRe
func (m *GetUsersOnlineStatusResp) String() string { return proto.CompactTextString(m) } func (m *GetUsersOnlineStatusResp) String() string { return proto.CompactTextString(m) }
func (*GetUsersOnlineStatusResp) ProtoMessage() {} func (*GetUsersOnlineStatusResp) ProtoMessage() {}
func (*GetUsersOnlineStatusResp) Descriptor() ([]byte, []int) { func (*GetUsersOnlineStatusResp) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{7} return fileDescriptor_relay_fe7346d2191b0ff8, []int{7}
} }
func (m *GetUsersOnlineStatusResp) XXX_Unmarshal(b []byte) error { func (m *GetUsersOnlineStatusResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUsersOnlineStatusResp.Unmarshal(m, b) return xxx_messageInfo_GetUsersOnlineStatusResp.Unmarshal(m, b)
@ -435,6 +435,8 @@ func (m *GetUsersOnlineStatusResp) GetFailedResult() []*GetUsersOnlineStatusResp
type GetUsersOnlineStatusResp_SuccessDetail struct { type GetUsersOnlineStatusResp_SuccessDetail struct {
Platform string `protobuf:"bytes,1,opt,name=platform" json:"platform,omitempty"` Platform string `protobuf:"bytes,1,opt,name=platform" json:"platform,omitempty"`
Status string `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` Status string `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"`
ConnID string `protobuf:"bytes,3,opt,name=connID" json:"connID,omitempty"`
IsBackground bool `protobuf:"varint,4,opt,name=isBackground" json:"isBackground,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -446,7 +448,7 @@ func (m *GetUsersOnlineStatusResp_SuccessDetail) Reset() {
func (m *GetUsersOnlineStatusResp_SuccessDetail) String() string { return proto.CompactTextString(m) } func (m *GetUsersOnlineStatusResp_SuccessDetail) String() string { return proto.CompactTextString(m) }
func (*GetUsersOnlineStatusResp_SuccessDetail) ProtoMessage() {} func (*GetUsersOnlineStatusResp_SuccessDetail) ProtoMessage() {}
func (*GetUsersOnlineStatusResp_SuccessDetail) Descriptor() ([]byte, []int) { func (*GetUsersOnlineStatusResp_SuccessDetail) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{7, 0} return fileDescriptor_relay_fe7346d2191b0ff8, []int{7, 0}
} }
func (m *GetUsersOnlineStatusResp_SuccessDetail) XXX_Unmarshal(b []byte) error { func (m *GetUsersOnlineStatusResp_SuccessDetail) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUsersOnlineStatusResp_SuccessDetail.Unmarshal(m, b) return xxx_messageInfo_GetUsersOnlineStatusResp_SuccessDetail.Unmarshal(m, b)
@ -480,6 +482,20 @@ func (m *GetUsersOnlineStatusResp_SuccessDetail) GetStatus() string {
return "" return ""
} }
func (m *GetUsersOnlineStatusResp_SuccessDetail) GetConnID() string {
if m != nil {
return m.ConnID
}
return ""
}
func (m *GetUsersOnlineStatusResp_SuccessDetail) GetIsBackground() bool {
if m != nil {
return m.IsBackground
}
return false
}
type GetUsersOnlineStatusResp_FailedDetail struct { type GetUsersOnlineStatusResp_FailedDetail struct {
UserID string `protobuf:"bytes,3,opt,name=userID" json:"userID,omitempty"` UserID string `protobuf:"bytes,3,opt,name=userID" json:"userID,omitempty"`
ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"`
@ -493,7 +509,7 @@ func (m *GetUsersOnlineStatusResp_FailedDetail) Reset() { *m = GetUsersO
func (m *GetUsersOnlineStatusResp_FailedDetail) String() string { return proto.CompactTextString(m) } func (m *GetUsersOnlineStatusResp_FailedDetail) String() string { return proto.CompactTextString(m) }
func (*GetUsersOnlineStatusResp_FailedDetail) ProtoMessage() {} func (*GetUsersOnlineStatusResp_FailedDetail) ProtoMessage() {}
func (*GetUsersOnlineStatusResp_FailedDetail) Descriptor() ([]byte, []int) { func (*GetUsersOnlineStatusResp_FailedDetail) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{7, 1} return fileDescriptor_relay_fe7346d2191b0ff8, []int{7, 1}
} }
func (m *GetUsersOnlineStatusResp_FailedDetail) XXX_Unmarshal(b []byte) error { func (m *GetUsersOnlineStatusResp_FailedDetail) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUsersOnlineStatusResp_FailedDetail.Unmarshal(m, b) return xxx_messageInfo_GetUsersOnlineStatusResp_FailedDetail.Unmarshal(m, b)
@ -549,7 +565,7 @@ func (m *GetUsersOnlineStatusResp_SuccessResult) Reset() {
func (m *GetUsersOnlineStatusResp_SuccessResult) String() string { return proto.CompactTextString(m) } func (m *GetUsersOnlineStatusResp_SuccessResult) String() string { return proto.CompactTextString(m) }
func (*GetUsersOnlineStatusResp_SuccessResult) ProtoMessage() {} func (*GetUsersOnlineStatusResp_SuccessResult) ProtoMessage() {}
func (*GetUsersOnlineStatusResp_SuccessResult) Descriptor() ([]byte, []int) { func (*GetUsersOnlineStatusResp_SuccessResult) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{7, 2} return fileDescriptor_relay_fe7346d2191b0ff8, []int{7, 2}
} }
func (m *GetUsersOnlineStatusResp_SuccessResult) XXX_Unmarshal(b []byte) error { func (m *GetUsersOnlineStatusResp_SuccessResult) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUsersOnlineStatusResp_SuccessResult.Unmarshal(m, b) return xxx_messageInfo_GetUsersOnlineStatusResp_SuccessResult.Unmarshal(m, b)
@ -603,7 +619,7 @@ func (m *KickUserOfflineReq) Reset() { *m = KickUserOfflineReq{} }
func (m *KickUserOfflineReq) String() string { return proto.CompactTextString(m) } func (m *KickUserOfflineReq) String() string { return proto.CompactTextString(m) }
func (*KickUserOfflineReq) ProtoMessage() {} func (*KickUserOfflineReq) ProtoMessage() {}
func (*KickUserOfflineReq) Descriptor() ([]byte, []int) { func (*KickUserOfflineReq) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{8} return fileDescriptor_relay_fe7346d2191b0ff8, []int{8}
} }
func (m *KickUserOfflineReq) XXX_Unmarshal(b []byte) error { func (m *KickUserOfflineReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_KickUserOfflineReq.Unmarshal(m, b) return xxx_messageInfo_KickUserOfflineReq.Unmarshal(m, b)
@ -654,7 +670,7 @@ func (m *KickUserOfflineResp) Reset() { *m = KickUserOfflineResp{} }
func (m *KickUserOfflineResp) String() string { return proto.CompactTextString(m) } func (m *KickUserOfflineResp) String() string { return proto.CompactTextString(m) }
func (*KickUserOfflineResp) ProtoMessage() {} func (*KickUserOfflineResp) ProtoMessage() {}
func (*KickUserOfflineResp) Descriptor() ([]byte, []int) { func (*KickUserOfflineResp) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{9} return fileDescriptor_relay_fe7346d2191b0ff8, []int{9}
} }
func (m *KickUserOfflineResp) XXX_Unmarshal(b []byte) error { func (m *KickUserOfflineResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_KickUserOfflineResp.Unmarshal(m, b) return xxx_messageInfo_KickUserOfflineResp.Unmarshal(m, b)
@ -688,7 +704,7 @@ func (m *MultiTerminalLoginCheckReq) Reset() { *m = MultiTerminalLoginCh
func (m *MultiTerminalLoginCheckReq) String() string { return proto.CompactTextString(m) } func (m *MultiTerminalLoginCheckReq) String() string { return proto.CompactTextString(m) }
func (*MultiTerminalLoginCheckReq) ProtoMessage() {} func (*MultiTerminalLoginCheckReq) ProtoMessage() {}
func (*MultiTerminalLoginCheckReq) Descriptor() ([]byte, []int) { func (*MultiTerminalLoginCheckReq) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{10} return fileDescriptor_relay_fe7346d2191b0ff8, []int{10}
} }
func (m *MultiTerminalLoginCheckReq) XXX_Unmarshal(b []byte) error { func (m *MultiTerminalLoginCheckReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MultiTerminalLoginCheckReq.Unmarshal(m, b) return xxx_messageInfo_MultiTerminalLoginCheckReq.Unmarshal(m, b)
@ -748,7 +764,7 @@ func (m *MultiTerminalLoginCheckResp) Reset() { *m = MultiTerminalLoginC
func (m *MultiTerminalLoginCheckResp) String() string { return proto.CompactTextString(m) } func (m *MultiTerminalLoginCheckResp) String() string { return proto.CompactTextString(m) }
func (*MultiTerminalLoginCheckResp) ProtoMessage() {} func (*MultiTerminalLoginCheckResp) ProtoMessage() {}
func (*MultiTerminalLoginCheckResp) Descriptor() ([]byte, []int) { func (*MultiTerminalLoginCheckResp) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_714521d58943e0d9, []int{11} return fileDescriptor_relay_fe7346d2191b0ff8, []int{11}
} }
func (m *MultiTerminalLoginCheckResp) XXX_Unmarshal(b []byte) error { func (m *MultiTerminalLoginCheckResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MultiTerminalLoginCheckResp.Unmarshal(m, b) return xxx_messageInfo_MultiTerminalLoginCheckResp.Unmarshal(m, b)
@ -1037,60 +1053,61 @@ var _Relay_serviceDesc = grpc.ServiceDesc{
Metadata: "relay/relay.proto", Metadata: "relay/relay.proto",
} }
func init() { proto.RegisterFile("relay/relay.proto", fileDescriptor_relay_714521d58943e0d9) } func init() { proto.RegisterFile("relay/relay.proto", fileDescriptor_relay_fe7346d2191b0ff8) }
var fileDescriptor_relay_714521d58943e0d9 = []byte{ var fileDescriptor_relay_fe7346d2191b0ff8 = []byte{
// 818 bytes of a gzipped FileDescriptorProto // 844 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xcd, 0x6e, 0xda, 0x4a, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x4f, 0x6f, 0xe3, 0x44,
0x14, 0x96, 0x03, 0xe4, 0xe7, 0x24, 0xb9, 0x37, 0x99, 0x9b, 0x5c, 0x1c, 0x5f, 0x09, 0x88, 0x17, 0x14, 0x97, 0x37, 0xc9, 0xee, 0xf6, 0xb5, 0x85, 0xee, 0xd0, 0x25, 0xae, 0x91, 0x92, 0xac, 0x0f,
0x57, 0xa8, 0x6a, 0x40, 0xa2, 0xdd, 0x75, 0x97, 0xa0, 0xa4, 0xa8, 0x41, 0x44, 0x43, 0xaa, 0x56, 0x28, 0x42, 0x34, 0x91, 0x02, 0x37, 0x6e, 0xd9, 0x68, 0x4b, 0x44, 0xa3, 0x54, 0x93, 0x45, 0xa0,
0xd9, 0x50, 0x07, 0x06, 0xb0, 0x30, 0xf6, 0x64, 0xc6, 0x4e, 0x94, 0x4d, 0xb7, 0xdd, 0x54, 0x5d, 0xbd, 0x04, 0xd7, 0x99, 0x38, 0x56, 0x1c, 0xcf, 0x74, 0xc6, 0x6e, 0xd5, 0x0b, 0x1c, 0xb9, 0x20,
0xf4, 0x01, 0xba, 0xe8, 0x4b, 0xf4, 0xf5, 0xaa, 0xf9, 0x81, 0xda, 0x80, 0x43, 0x53, 0x29, 0x9b, 0x0e, 0x7c, 0x00, 0x0e, 0x7c, 0x45, 0xbe, 0x00, 0x9a, 0x3f, 0x31, 0x76, 0x12, 0x37, 0x14, 0xa9,
0x84, 0x73, 0x7c, 0xfe, 0xbe, 0xef, 0x7c, 0x9e, 0x31, 0xec, 0x32, 0xe2, 0x39, 0xf7, 0x55, 0xf9, 0x97, 0x36, 0xef, 0xe7, 0xf7, 0xef, 0xf7, 0x7b, 0x6f, 0xc6, 0x86, 0x57, 0x9c, 0x44, 0xde, 0x7d,
0xb7, 0x42, 0x59, 0x10, 0x06, 0x28, 0x27, 0x0d, 0xab, 0xdc, 0xa2, 0xc4, 0x3f, 0x6a, 0x34, 0x8f, 0x57, 0xfd, 0xed, 0x30, 0x4e, 0x13, 0x8a, 0x6a, 0xca, 0x70, 0xda, 0x63, 0x46, 0xe2, 0xf3, 0xe1,
0xda, 0x84, 0xdd, 0x12, 0x56, 0xa5, 0xa3, 0x41, 0x55, 0x06, 0x54, 0x79, 0x6f, 0xd4, 0xb9, 0xe3, 0xe8, 0x7c, 0x42, 0xf8, 0x2d, 0xe1, 0x5d, 0xb6, 0x0c, 0xba, 0xca, 0xa1, 0x2b, 0x66, 0xcb, 0xe9,
0xd5, 0x3b, 0xae, 0x12, 0xec, 0x2f, 0x06, 0xec, 0xb4, 0x7c, 0xcf, 0xf5, 0xc9, 0x45, 0xc4, 0x87, 0x9d, 0xe8, 0xde, 0x09, 0x1d, 0xe0, 0xfe, 0x6e, 0xc1, 0xc9, 0x38, 0x8e, 0xc2, 0x98, 0x5c, 0xa5,
0x4d, 0x3e, 0xc0, 0xe4, 0x06, 0x95, 0x60, 0xb3, 0x45, 0x09, 0x73, 0x42, 0x37, 0xf0, 0x1b, 0x75, 0x62, 0x31, 0x12, 0x01, 0x26, 0x37, 0xa8, 0x05, 0x87, 0x63, 0x46, 0xb8, 0x97, 0x84, 0x34, 0x1e,
0xd3, 0x28, 0x19, 0xe5, 0x0d, 0x1c, 0x77, 0xa1, 0x97, 0xb0, 0x36, 0xe6, 0x83, 0xba, 0x13, 0x3a, 0x0e, 0x6c, 0xab, 0x65, 0xb5, 0x0f, 0x70, 0x1e, 0x42, 0x5f, 0xc3, 0x8b, 0x95, 0x08, 0x06, 0x5e,
0xe6, 0x4a, 0xc9, 0x28, 0x6f, 0xd6, 0xac, 0x0a, 0x97, 0xad, 0x3a, 0x0e, 0x75, 0x3b, 0xd4, 0x61, 0xe2, 0xd9, 0xcf, 0x5a, 0x56, 0xfb, 0xb0, 0xe7, 0x74, 0x84, 0x2a, 0x35, 0xf5, 0x58, 0x38, 0x65,
0xce, 0x98, 0x57, 0x9a, 0x2a, 0x02, 0x4f, 0x42, 0x91, 0x0d, 0x5b, 0x34, 0xe2, 0xc3, 0xcb, 0xe0, 0x1e, 0xf7, 0x56, 0xa2, 0x33, 0xd2, 0x1e, 0x78, 0xed, 0x8a, 0x5c, 0x38, 0x62, 0xa9, 0x58, 0xbc,
0x2d, 0x27, 0xac, 0x51, 0x37, 0x33, 0xb2, 0x70, 0xc2, 0x67, 0x9f, 0xc1, 0xee, 0xcc, 0x3c, 0x9c, 0xa7, 0xdf, 0x0b, 0xc2, 0x87, 0x03, 0xbb, 0xa2, 0x12, 0x17, 0x30, 0xf7, 0x02, 0x5e, 0x6d, 0xf4,
0xa2, 0x1a, 0x64, 0x19, 0xe1, 0xd4, 0x34, 0x4a, 0x99, 0xf2, 0x66, 0xad, 0x50, 0x51, 0x90, 0xdb, 0x23, 0x18, 0xea, 0x41, 0x95, 0x13, 0xc1, 0x6c, 0xab, 0x55, 0x69, 0x1f, 0xf6, 0x1a, 0x1d, 0x4d,
0xae, 0x3f, 0xf0, 0x48, 0x93, 0x0f, 0x54, 0xf2, 0x85, 0xe7, 0x84, 0xfd, 0x80, 0x8d, 0xb1, 0x8c, 0x79, 0x12, 0xc6, 0x41, 0x44, 0x46, 0x22, 0xd0, 0xc1, 0x57, 0x91, 0x97, 0xcc, 0x29, 0x5f, 0x61,
0xb5, 0x3f, 0x19, 0x70, 0x20, 0x22, 0x88, 0x37, 0x8d, 0xc0, 0x84, 0x47, 0x5e, 0x78, 0xee, 0xf2, 0xe5, 0xeb, 0xfe, 0x6a, 0xc1, 0x99, 0xf4, 0x20, 0x51, 0xe6, 0x81, 0x89, 0x48, 0xa3, 0xe4, 0x32,
0x10, 0xfd, 0x0b, 0xab, 0x91, 0x1a, 0x42, 0xa1, 0xd3, 0xd6, 0xb4, 0xd3, 0xca, 0xef, 0x77, 0x42, 0x14, 0x09, 0xfa, 0x14, 0x9e, 0xa7, 0xba, 0x09, 0xcd, 0xce, 0x58, 0x59, 0xa5, 0x67, 0xff, 0xbd,
0x05, 0x80, 0x60, 0x3a, 0xb2, 0x04, 0xb5, 0x8e, 0x63, 0x1e, 0xfb, 0x9b, 0x01, 0xa6, 0xc2, 0x74, 0x12, 0x6a, 0x00, 0xd0, 0xac, 0x65, 0x45, 0xea, 0x25, 0xce, 0x21, 0xee, 0x9f, 0x16, 0xd8, 0x9a,
0xec, 0x84, 0xdd, 0xa1, 0xf0, 0xb5, 0x7c, 0xf2, 0xc4, 0x5c, 0x3f, 0x83, 0x9d, 0x38, 0xaf, 0x02, 0x53, 0xdf, 0x4b, 0xfc, 0x85, 0xc4, 0xc6, 0x31, 0x79, 0x62, 0xad, 0xbf, 0x80, 0x93, 0xbc, 0xae,
0xb4, 0x99, 0x29, 0x65, 0xca, 0x1b, 0x78, 0xce, 0x6f, 0xbb, 0x70, 0x90, 0x32, 0x1f, 0xa7, 0xe8, 0x92, 0xb4, 0x5d, 0x69, 0x55, 0xda, 0x07, 0x78, 0x0b, 0x77, 0x43, 0x38, 0x2b, 0xe9, 0x4f, 0x30,
0x1c, 0x76, 0xb8, 0x84, 0x2f, 0xfc, 0x8a, 0x41, 0xbd, 0x87, 0x52, 0x8c, 0x9d, 0x85, 0x2c, 0xe3, 0x74, 0x09, 0x27, 0x42, 0xd1, 0x97, 0xb8, 0x56, 0xd0, 0xcc, 0xa1, 0x95, 0x53, 0x67, 0xa7, 0xca,
0xb9, 0x4c, 0xfb, 0x1e, 0xf2, 0x29, 0x64, 0x0a, 0x1a, 0x55, 0xd0, 0x49, 0xd0, 0x23, 0x92, 0x88, 0x78, 0x2b, 0xd2, 0xbd, 0x87, 0x7a, 0x89, 0x98, 0x52, 0x46, 0xed, 0xf4, 0x96, 0xce, 0x88, 0x12,
0x0c, 0x8e, 0x79, 0xc4, 0xca, 0x30, 0xe9, 0xde, 0x36, 0xea, 0x92, 0x86, 0x0d, 0xac, 0x2d, 0xf4, 0xa2, 0x82, 0x73, 0x88, 0x1c, 0x19, 0x26, 0xfe, 0xed, 0x70, 0xa0, 0x64, 0x38, 0xc0, 0xc6, 0x42,
0x3f, 0xfc, 0x25, 0x7e, 0x89, 0x3a, 0xa7, 0x01, 0x1b, 0x6b, 0x5d, 0xe5, 0xf0, 0x8c, 0xd7, 0xbe, 0x9f, 0xc3, 0x47, 0xf2, 0x97, 0xcc, 0xf3, 0x8e, 0xf2, 0x95, 0xd9, 0xab, 0x1a, 0xde, 0x40, 0xdd,
0x83, 0xfc, 0x19, 0x09, 0x45, 0x4b, 0xae, 0xd0, 0xb6, 0x43, 0x27, 0x8c, 0xb8, 0x58, 0x42, 0x01, 0x3b, 0xa8, 0x5f, 0x90, 0x44, 0x96, 0x14, 0x9a, 0xed, 0x24, 0xf1, 0x92, 0x54, 0xc8, 0x21, 0x34,
0x20, 0xfa, 0x45, 0x93, 0x21, 0x69, 0x8a, 0x79, 0xc4, 0x92, 0x82, 0xd8, 0x92, 0x54, 0xff, 0xb8, 0x00, 0xd2, 0x7f, 0x65, 0xb2, 0x94, 0x4c, 0x39, 0x44, 0x0e, 0x89, 0xe6, 0x86, 0xa4, 0xeb, 0xe7,
0x0b, 0x59, 0xb0, 0x1e, 0xd0, 0x84, 0xac, 0xa7, 0xb6, 0xfd, 0x23, 0x0b, 0xe6, 0xe2, 0xce, 0x9c, 0x21, 0xe4, 0xc0, 0x4b, 0xca, 0x0a, 0x6b, 0x9d, 0xd9, 0xee, 0xdf, 0x55, 0xb0, 0x77, 0x57, 0x16,
0x22, 0x13, 0xd6, 0x08, 0x63, 0x53, 0xc8, 0x39, 0x3c, 0x31, 0x05, 0x5e, 0xc2, 0x58, 0x93, 0x0f, 0x0c, 0xd9, 0xf0, 0x82, 0x70, 0x9e, 0x51, 0xae, 0xe1, 0xb5, 0x29, 0xf9, 0x12, 0xce, 0x47, 0x22,
0x26, 0x78, 0x95, 0x85, 0xda, 0xb0, 0xcd, 0xa3, 0x6e, 0x97, 0x70, 0xae, 0xb7, 0x91, 0x91, 0xdb, 0x58, 0xf3, 0xd5, 0x16, 0x9a, 0xc0, 0xb1, 0x48, 0x7d, 0x9f, 0x08, 0x61, 0xa6, 0x51, 0x51, 0xd3,
0x38, 0xd2, 0xdb, 0x48, 0xeb, 0x54, 0x69, 0xc7, 0x93, 0x70, 0xb2, 0x06, 0xba, 0x80, 0xad, 0xbe, 0x38, 0x37, 0xd3, 0x28, 0xab, 0xd4, 0x99, 0xe4, 0x83, 0x70, 0x31, 0x07, 0xba, 0x82, 0xa3, 0xb9,
0xe3, 0x7a, 0xa4, 0xa7, 0x6b, 0x66, 0x65, 0xcd, 0xe7, 0xcb, 0x6a, 0x9e, 0xca, 0x9c, 0x3a, 0x09, 0x17, 0x46, 0x64, 0x66, 0x72, 0x56, 0x55, 0xce, 0x2f, 0xf7, 0xe5, 0x7c, 0xa7, 0x62, 0x06, 0x24,
0x1d, 0xd7, 0xc3, 0x89, 0x0a, 0xd6, 0x09, 0x6c, 0xeb, 0x8e, 0xea, 0xb1, 0xa0, 0x88, 0xea, 0x5d, 0xf1, 0xc2, 0x08, 0x17, 0x32, 0x38, 0xbf, 0xc0, 0xb1, 0xa9, 0xa8, 0x1f, 0x4b, 0x89, 0x98, 0x99,
0x6b, 0x99, 0x4f, 0x6d, 0x81, 0x95, 0xcb, 0xaa, 0x13, 0xac, 0xca, 0xb2, 0xde, 0xc3, 0x56, 0xbc, 0xb5, 0x59, 0xf3, 0xcc, 0x96, 0x5c, 0x85, 0xca, 0xba, 0xe6, 0xaa, 0x2d, 0x89, 0xfb, 0x34, 0x8e,
0x45, 0xec, 0xb5, 0xcd, 0x24, 0x5e, 0xdb, 0x47, 0xb3, 0x68, 0x7d, 0x37, 0xa6, 0xf3, 0x69, 0x0a, 0x33, 0x51, 0x8d, 0x25, 0x6f, 0x92, 0x50, 0xf4, 0x3d, 0x7f, 0x19, 0x70, 0x9a, 0xc6, 0x33, 0xbb,
0xd2, 0x8e, 0x84, 0x94, 0xd9, 0x90, 0x03, 0x7b, 0x3d, 0x39, 0xd5, 0x44, 0xc1, 0x8a, 0x97, 0x47, 0xaa, 0x0e, 0x5d, 0x01, 0x73, 0x7e, 0x84, 0xa3, 0x7c, 0x7b, 0xb9, 0x23, 0x5f, 0x29, 0x1c, 0xf9,
0xae, 0x43, 0x73, 0xb7, 0xb0, 0x94, 0xfd, 0x11, 0xd0, 0x1b, 0xb7, 0x3b, 0x12, 0x05, 0x5a, 0xfd, 0x47, 0x4f, 0xc0, 0xf9, 0xcb, 0xca, 0xb8, 0x19, 0xf9, 0xca, 0xae, 0x93, 0x32, 0x5e, 0x1e, 0x9c,
0xbe, 0x28, 0xa0, 0x8f, 0x8c, 0x60, 0xfe, 0xc8, 0x88, 0xab, 0xb1, 0x00, 0x30, 0xa1, 0x56, 0xcb, 0xce, 0x54, 0x57, 0xeb, 0xed, 0xd7, 0x9a, 0x3e, 0x72, 0x94, 0x46, 0xf7, 0x9d, 0xa9, 0xdc, 0x9f,
0x35, 0x87, 0x63, 0x1e, 0xf1, 0xca, 0x8c, 0x74, 0xdd, 0xc4, 0xd1, 0x30, 0xe3, 0xb5, 0xf7, 0xe1, 0x01, 0x7d, 0x17, 0xfa, 0x4b, 0x99, 0x60, 0x3c, 0x9f, 0xcb, 0x04, 0xe6, 0xba, 0xa1, 0xdb, 0xd7,
0x9f, 0xb9, 0xfe, 0x9c, 0xda, 0x9f, 0x0d, 0xb0, 0x9a, 0x91, 0x17, 0xba, 0x97, 0x84, 0x8d, 0x5d, 0x4d, 0x7e, 0x93, 0x1b, 0x00, 0xeb, 0xb1, 0x98, 0x55, 0xaf, 0xe1, 0x1c, 0x22, 0x8f, 0xdb, 0xd2,
0xdf, 0xf1, 0xce, 0x83, 0x81, 0xeb, 0x9f, 0x0c, 0x49, 0x77, 0x24, 0xe6, 0x4b, 0x23, 0x72, 0xd9, 0xe4, 0x2d, 0x5c, 0x2b, 0x1b, 0xa8, 0xfb, 0x1a, 0x3e, 0xd9, 0xaa, 0x2f, 0x98, 0xfb, 0x9b, 0x05,
0x54, 0x7b, 0x90, 0x0b, 0x83, 0x11, 0xf1, 0xf5, 0x6e, 0x95, 0x31, 0x8b, 0x36, 0x3b, 0x87, 0xd6, 0xce, 0x28, 0x8d, 0x92, 0xf0, 0x3d, 0xe1, 0xab, 0x30, 0xf6, 0xa2, 0x4b, 0x1a, 0x84, 0xf1, 0xdb,
0x6e, 0xc1, 0x7f, 0xa9, 0xd3, 0xfc, 0xc9, 0x1b, 0x56, 0xfb, 0x9a, 0x05, 0x75, 0x91, 0xa2, 0x63, 0x05, 0xf1, 0x97, 0xb2, 0xbf, 0x32, 0x21, 0xf7, 0x75, 0x75, 0x0a, 0xb5, 0x84, 0x2e, 0x49, 0x6c,
0xd8, 0x4e, 0xdc, 0x46, 0x28, 0xaf, 0xd7, 0x3a, 0x7b, 0x67, 0x5a, 0xe6, 0xe2, 0x07, 0x9c, 0xa2, 0x66, 0xab, 0x8d, 0x4d, 0xb6, 0xd5, 0x2d, 0xb6, 0xee, 0x18, 0x3e, 0x2b, 0xed, 0xe6, 0xff, 0x9c,
0x77, 0xb0, 0xb7, 0x48, 0x04, 0xa8, 0xf0, 0xa0, 0x42, 0x6e, 0xac, 0xe2, 0x12, 0x05, 0xa1, 0x2b, 0xce, 0xde, 0x1f, 0x55, 0xd0, 0x2f, 0x61, 0xd4, 0x87, 0xe3, 0xc2, 0x9b, 0x0c, 0xd5, 0xcd, 0x58,
0xd8, 0x5f, 0x78, 0x6c, 0xa3, 0x62, 0x62, 0x96, 0xf9, 0x4b, 0xc7, 0x2a, 0x3d, 0x1c, 0xc0, 0x29, 0x37, 0xdf, 0xb7, 0x8e, 0xbd, 0xfb, 0x81, 0x60, 0xe8, 0x07, 0x38, 0xdd, 0xb5, 0x04, 0xa8, 0xf1,
0xea, 0x41, 0xb1, 0x1d, 0x51, 0xc2, 0xce, 0x58, 0x10, 0xd1, 0x27, 0xeb, 0xf2, 0x1a, 0xfe, 0x9e, 0xe0, 0x86, 0xdc, 0x38, 0xcd, 0x3d, 0x1b, 0x84, 0x3e, 0xc0, 0xeb, 0x9d, 0x57, 0x3e, 0x6a, 0x16,
0xd1, 0x17, 0x3a, 0xd0, 0x49, 0xf3, 0xba, 0xb7, 0xac, 0xb4, 0x47, 0x9c, 0xa2, 0x0f, 0x90, 0x4f, 0x7a, 0xd9, 0x7e, 0x61, 0x39, 0xad, 0x87, 0x1d, 0x04, 0x43, 0x33, 0x68, 0x4e, 0x52, 0x46, 0xf8,
0xd1, 0x00, 0x3a, 0xd4, 0x69, 0xe9, 0x8a, 0xb5, 0xec, 0x65, 0x21, 0x9c, 0x1e, 0x1f, 0x5e, 0x15, 0x05, 0xa7, 0x29, 0x7b, 0xb2, 0x2a, 0xdf, 0xc2, 0xc7, 0x1b, 0xfb, 0x85, 0xce, 0x4c, 0xd0, 0xf6,
0xc5, 0x57, 0x55, 0xa7, 0xd1, 0x8c, 0x7d, 0x4e, 0xc9, 0xb4, 0x57, 0xf4, 0x1a, 0x8b, 0xff, 0xd7, 0xde, 0x3b, 0x4e, 0xd9, 0x23, 0xc1, 0xd0, 0x4f, 0x50, 0x2f, 0xd9, 0x01, 0xf4, 0xc6, 0x84, 0x95,
0xab, 0xd2, 0xf9, 0xe2, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0x95, 0x44, 0xed, 0x71, 0x99, 0x09, 0x6f, 0xac, 0xe3, 0xee, 0x73, 0x11, 0xac, 0xff, 0xe6, 0x43, 0x53, 0x7e, 0x91, 0x4d, 0x87, 0xa3,
0x00, 0x00, 0xdc, 0xa7, 0x98, 0x0a, 0xfb, 0x86, 0x5d, 0x63, 0xf9, 0xff, 0xfa, 0xb9, 0x02, 0xbf, 0xfa, 0x27,
0x00, 0x00, 0xff, 0xff, 0xcb, 0xed, 0x6a, 0xe8, 0xd5, 0x09, 0x00, 0x00,
} }

View File

@ -55,6 +55,8 @@ message GetUsersOnlineStatusResp{
message SuccessDetail{ message SuccessDetail{
string platform = 1; string platform = 1;
string status = 2; string status = 2;
string connID = 3;
bool isBackground = 4;
} }
message FailedDetail{ message FailedDetail{
string userID = 3; string userID = 3;