Adjust error code

This commit is contained in:
wenxu12345 2022-07-29 15:47:19 +08:00
parent 4c53023ebc
commit 6a19c8130c
7 changed files with 322 additions and 68 deletions

View File

@ -150,7 +150,7 @@ func ParseToken(c *gin.Context) {
if err := c.BindJSON(&params); err != nil { if err := c.BindJSON(&params); err != nil {
errMsg := " BindJSON failed " + err.Error() errMsg := " BindJSON failed " + err.Error()
log.NewError("0", errMsg) log.NewError("0", errMsg)
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg}) c.JSON(http.StatusBadRequest, gin.H{"errCode": 200, "errMsg": errMsg})
return return
} }
@ -161,7 +161,7 @@ func ParseToken(c *gin.Context) {
if !ok { if !ok {
errMsg := params.OperationID + " " + "GetUserIDFromTokenExpireTime failed " + errInfo + " token:" + c.Request.Header.Get("token") errMsg := params.OperationID + " " + "GetUserIDFromTokenExpireTime failed " + errInfo + " token:" + c.Request.Header.Get("token")
log.NewError(params.OperationID, errMsg) log.NewError(params.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) c.JSON(http.StatusInternalServerError, gin.H{"errCode": 200, "errMsg": errMsg})
return return
} }

View File

@ -52,6 +52,9 @@ func (ws *WServer) msgParse(conn *UserConn, binaryMsg []byte) {
case constant.WSPullMsgBySeqList: case constant.WSPullMsgBySeqList:
log.NewInfo(m.OperationID, "pullMsgBySeqListReq ", m.SendID, m.MsgIncr, m.ReqIdentifier) log.NewInfo(m.OperationID, "pullMsgBySeqListReq ", m.SendID, m.MsgIncr, m.ReqIdentifier)
ws.pullMsgBySeqListReq(conn, &m) ws.pullMsgBySeqListReq(conn, &m)
case constant.WsLogoutMsg:
log.NewInfo(m.OperationID, "conn.Close()", m.SendID, m.MsgIncr, m.ReqIdentifier)
conn.Close()
default: default:
log.Error(m.OperationID, "ReqIdentifier failed ", m.SendID, m.MsgIncr, m.ReqIdentifier) log.Error(m.OperationID, "ReqIdentifier failed ", m.SendID, m.MsgIncr, m.ReqIdentifier)
} }

View File

@ -28,6 +28,7 @@ type RPCServer struct {
etcdAddr []string etcdAddr []string
platformList []int platformList []int
pushTerminal []int pushTerminal []int
target string
} }
func (r *RPCServer) onInit(rpcPort int) { func (r *RPCServer) onInit(rpcPort int) {
@ -66,6 +67,7 @@ func (r *RPCServer) run() {
if err != nil { if err != nil {
log.Error("", "register push message rpc to etcd err", "", "err", err.Error(), r.etcdSchema, strings.Join(r.etcdAddr, ","), rpcRegisterIP, r.rpcPort, r.rpcRegisterName) log.Error("", "register push message rpc to etcd err", "", "err", err.Error(), r.etcdSchema, strings.Join(r.etcdAddr, ","), rpcRegisterIP, r.rpcPort, r.rpcRegisterName)
} }
r.target = getcdv3.GetTarget(r.etcdSchema, rpcRegisterIP, r.rpcPort, r.rpcRegisterName)
err = srv.Serve(listener) err = srv.Serve(listener)
if err != nil { if err != nil {
log.Error("", "push message rpc listening err", "", "err", err.Error()) log.Error("", "push message rpc listening err", "", "err", err.Error())
@ -301,6 +303,11 @@ func (r *RPCServer) KickUserOffline(_ context.Context, req *pbRelay.KickUserOffl
return &pbRelay.KickUserOfflineResp{}, nil return &pbRelay.KickUserOfflineResp{}, nil
} }
func (r *RPCServer) MultiTerminalLoginCheck(ctx context.Context, req *pbRelay.MultiTerminalLoginCheckReq) (*pbRelay.MultiTerminalLoginCheckResp, error) {
ws.MultiTerminalLoginCheckerWithLock(req.UserID, int(req.PlatformID), req.Token, req.OperationID)
return &pbRelay.MultiTerminalLoginCheckResp{}, nil
}
func sendMsgToUser(conn *UserConn, bMsg []byte, in *pbRelay.OnlinePushMsgReq, RecvPlatForm int, RecvID string) (ResultCode int64) { func sendMsgToUser(conn *UserConn, bMsg []byte, in *pbRelay.OnlinePushMsgReq, RecvPlatForm int, RecvID string) (ResultCode int64) {
err := ws.writeMsg(conn, websocket.BinaryMessage, bMsg) err := ws.writeMsg(conn, websocket.BinaryMessage, bMsg)
if err != nil { if err != nil {

View File

@ -6,11 +6,15 @@ import (
"Open_IM/pkg/common/db" "Open_IM/pkg/common/db"
"Open_IM/pkg/common/log" "Open_IM/pkg/common/log"
"Open_IM/pkg/common/token_verify" "Open_IM/pkg/common/token_verify"
"Open_IM/pkg/grpc-etcdv3/getcdv3"
pbRelay "Open_IM/pkg/proto/relay"
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"bytes" "bytes"
"context"
"encoding/gob" "encoding/gob"
go_redis "github.com/go-redis/redis/v8" go_redis "github.com/go-redis/redis/v8"
"github.com/pkg/errors" "github.com/pkg/errors"
"strings"
//"gopkg.in/errgo.v2/errors" //"gopkg.in/errgo.v2/errors"
"net/http" "net/http"
@ -113,6 +117,79 @@ func (ws *WServer) SetWriteTimeoutWriteMsg(conn *UserConn, a int, msg []byte, ti
conn.SetWriteDeadline(time.Now().Add(time.Duration(timeout) * time.Second)) conn.SetWriteDeadline(time.Now().Add(time.Duration(timeout) * time.Second))
return conn.WriteMessage(a, msg) return conn.WriteMessage(a, msg)
} }
func (ws *WServer) MultiTerminalLoginRemoteChecker(userID string, platformID int32, token string, operationID string) {
grpcCons := getcdv3.GetConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImRelayName)
for _, v := range grpcCons {
if v.Target() == rpcSvr.target {
log.Debug(operationID, "Filter out this node ", rpcSvr.target)
continue
}
client := pbRelay.NewRelayClient(v)
req := &pbRelay.MultiTerminalLoginCheckReq{OperationID: operationID, PlatformID: platformID, UserID: userID, Token: token}
log.NewInfo(operationID, "MultiTerminalLoginCheckReq ", client, req.String())
resp, err := client.MultiTerminalLoginCheck(context.Background(), req)
if err != nil {
log.Error(operationID, "MultiTerminalLoginCheck failed ", err.Error())
}
if resp.ErrCode != 0 {
log.Error(operationID, "MultiTerminalLoginCheck errCode, errMsg: ", resp.ErrCode, resp.ErrMsg)
}
}
}
func (ws *WServer) MultiTerminalLoginCheckerWithLock(uid string, platformID int, token string, operationID string) {
rwLock.Lock()
defer rwLock.Unlock()
switch config.Config.MultiLoginPolicy {
case constant.AllLoginButSameTermKick:
if oldConnMap, ok := ws.wsUserToConn[uid]; ok { // user->map[platform->conn]
if oldConn, ok := oldConnMap[platformID]; ok {
log.NewDebug(operationID, uid, platformID, "kick old conn")
m, err := db.DB.GetTokenMapByUidPid(uid, constant.PlatformIDToName(platformID))
if err != nil && err != go_redis.Nil {
log.NewError(operationID, "get token from redis err", err.Error(), uid, constant.PlatformIDToName(platformID))
return
}
if m == nil {
log.NewError(operationID, "get token from redis err", "m is nil", uid, constant.PlatformIDToName(platformID))
return
}
log.NewDebug(operationID, "get token map is ", m, uid, constant.PlatformIDToName(platformID))
for k, _ := range m {
if k != token {
m[k] = constant.KickedToken
}
}
log.NewDebug(operationID, "set token map is ", m, uid, constant.PlatformIDToName(platformID))
err = db.DB.SetTokenMapByUidPid(uid, platformID, m)
if err != nil {
log.NewError(operationID, "SetTokenMapByUidPid err", err.Error(), uid, platformID, m)
return
}
err = oldConn.Close()
delete(oldConnMap, platformID)
ws.wsUserToConn[uid] = oldConnMap
if len(oldConnMap) == 0 {
delete(ws.wsUserToConn, uid)
}
delete(ws.wsConnToUser, oldConn)
if err != nil {
log.NewError(operationID, "conn close err", err.Error(), uid, platformID)
}
} else {
log.NewWarn(operationID, "abnormal uid-conn ", uid, platformID, oldConnMap[platformID])
}
} else {
log.NewDebug(operationID, "no other conn", ws.wsUserToConn, uid, platformID)
}
case constant.SingleTerminalLogin:
case constant.WebAndOther:
}
}
func (ws *WServer) MultiTerminalLoginChecker(uid string, platformID int, newConn *UserConn, token string, operationID string) { func (ws *WServer) MultiTerminalLoginChecker(uid string, platformID int, newConn *UserConn, token string, operationID string) {
switch config.Config.MultiLoginPolicy { switch config.Config.MultiLoginPolicy {
case constant.AllLoginButSameTermKick: case constant.AllLoginButSameTermKick:
@ -191,6 +268,7 @@ func (ws *WServer) addUserConn(uid string, platformID int, conn *UserConn, token
if callbackResp.ErrCode != 0 { if callbackResp.ErrCode != 0 {
log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOnline resp:", callbackResp) log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOnline resp:", callbackResp)
} }
go ws.MultiTerminalLoginRemoteChecker(uid, int32(platformID), token, operationID)
ws.MultiTerminalLoginChecker(uid, platformID, conn, token, operationID) ws.MultiTerminalLoginChecker(uid, platformID, conn, token, operationID)
if oldConnMap, ok := ws.wsUserToConn[uid]; ok { if oldConnMap, ok := ws.wsUserToConn[uid]; ok {
oldConnMap[platformID] = conn oldConnMap[platformID] = conn

View File

@ -37,6 +37,11 @@ func RegisterEtcd4Unique(schema, etcdAddr, myHost string, myPort int, serviceNam
return RegisterEtcd(schema, etcdAddr, myHost, myPort, serviceName, ttl) return RegisterEtcd(schema, etcdAddr, myHost, myPort, serviceName, ttl)
} }
func GetTarget(schema, myHost string, myPort int, serviceName string) string {
serviceName = serviceName + ":" + net.JoinHostPort(myHost, strconv.Itoa(myPort))
return serviceName
}
//etcdAddr separated by commas //etcdAddr separated by commas
func RegisterEtcd(schema, etcdAddr, myHost string, myPort int, serviceName string, ttl int) error { func RegisterEtcd(schema, etcdAddr, myHost string, myPort int, serviceName string, ttl int) error {
operationID := utils.OperationIDGenerator() operationID := utils.OperationIDGenerator()

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_9ac412c3c8c99f28, []int{0} return fileDescriptor_relay_e9fd8824fb6cabec, []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_9ac412c3c8c99f28, []int{1} return fileDescriptor_relay_e9fd8824fb6cabec, []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_9ac412c3c8c99f28, []int{2} return fileDescriptor_relay_e9fd8824fb6cabec, []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_9ac412c3c8c99f28, []int{3} return fileDescriptor_relay_e9fd8824fb6cabec, []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_9ac412c3c8c99f28, []int{4} return fileDescriptor_relay_e9fd8824fb6cabec, []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_9ac412c3c8c99f28, []int{5} return fileDescriptor_relay_e9fd8824fb6cabec, []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_9ac412c3c8c99f28, []int{6} return fileDescriptor_relay_e9fd8824fb6cabec, []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_9ac412c3c8c99f28, []int{7} return fileDescriptor_relay_e9fd8824fb6cabec, []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)
@ -446,7 +446,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_9ac412c3c8c99f28, []int{7, 0} return fileDescriptor_relay_e9fd8824fb6cabec, []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)
@ -493,7 +493,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_9ac412c3c8c99f28, []int{7, 1} return fileDescriptor_relay_e9fd8824fb6cabec, []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 +549,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_9ac412c3c8c99f28, []int{7, 2} return fileDescriptor_relay_e9fd8824fb6cabec, []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 +603,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_9ac412c3c8c99f28, []int{8} return fileDescriptor_relay_e9fd8824fb6cabec, []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 +654,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_9ac412c3c8c99f28, []int{9} return fileDescriptor_relay_e9fd8824fb6cabec, []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)
@ -674,6 +674,114 @@ func (m *KickUserOfflineResp) XXX_DiscardUnknown() {
var xxx_messageInfo_KickUserOfflineResp proto.InternalMessageInfo var xxx_messageInfo_KickUserOfflineResp proto.InternalMessageInfo
type MultiTerminalLoginCheckReq struct {
UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"`
PlatformID int32 `protobuf:"varint,2,opt,name=platformID" json:"platformID,omitempty"`
Token string `protobuf:"bytes,3,opt,name=token" json:"token,omitempty"`
OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *MultiTerminalLoginCheckReq) Reset() { *m = MultiTerminalLoginCheckReq{} }
func (m *MultiTerminalLoginCheckReq) String() string { return proto.CompactTextString(m) }
func (*MultiTerminalLoginCheckReq) ProtoMessage() {}
func (*MultiTerminalLoginCheckReq) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_e9fd8824fb6cabec, []int{10}
}
func (m *MultiTerminalLoginCheckReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MultiTerminalLoginCheckReq.Unmarshal(m, b)
}
func (m *MultiTerminalLoginCheckReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_MultiTerminalLoginCheckReq.Marshal(b, m, deterministic)
}
func (dst *MultiTerminalLoginCheckReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_MultiTerminalLoginCheckReq.Merge(dst, src)
}
func (m *MultiTerminalLoginCheckReq) XXX_Size() int {
return xxx_messageInfo_MultiTerminalLoginCheckReq.Size(m)
}
func (m *MultiTerminalLoginCheckReq) XXX_DiscardUnknown() {
xxx_messageInfo_MultiTerminalLoginCheckReq.DiscardUnknown(m)
}
var xxx_messageInfo_MultiTerminalLoginCheckReq proto.InternalMessageInfo
func (m *MultiTerminalLoginCheckReq) GetUserID() string {
if m != nil {
return m.UserID
}
return ""
}
func (m *MultiTerminalLoginCheckReq) GetPlatformID() int32 {
if m != nil {
return m.PlatformID
}
return 0
}
func (m *MultiTerminalLoginCheckReq) GetToken() string {
if m != nil {
return m.Token
}
return ""
}
func (m *MultiTerminalLoginCheckReq) GetOperationID() string {
if m != nil {
return m.OperationID
}
return ""
}
type MultiTerminalLoginCheckResp struct {
ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"`
ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *MultiTerminalLoginCheckResp) Reset() { *m = MultiTerminalLoginCheckResp{} }
func (m *MultiTerminalLoginCheckResp) String() string { return proto.CompactTextString(m) }
func (*MultiTerminalLoginCheckResp) ProtoMessage() {}
func (*MultiTerminalLoginCheckResp) Descriptor() ([]byte, []int) {
return fileDescriptor_relay_e9fd8824fb6cabec, []int{11}
}
func (m *MultiTerminalLoginCheckResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MultiTerminalLoginCheckResp.Unmarshal(m, b)
}
func (m *MultiTerminalLoginCheckResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_MultiTerminalLoginCheckResp.Marshal(b, m, deterministic)
}
func (dst *MultiTerminalLoginCheckResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_MultiTerminalLoginCheckResp.Merge(dst, src)
}
func (m *MultiTerminalLoginCheckResp) XXX_Size() int {
return xxx_messageInfo_MultiTerminalLoginCheckResp.Size(m)
}
func (m *MultiTerminalLoginCheckResp) XXX_DiscardUnknown() {
xxx_messageInfo_MultiTerminalLoginCheckResp.DiscardUnknown(m)
}
var xxx_messageInfo_MultiTerminalLoginCheckResp proto.InternalMessageInfo
func (m *MultiTerminalLoginCheckResp) GetErrCode() int32 {
if m != nil {
return m.ErrCode
}
return 0
}
func (m *MultiTerminalLoginCheckResp) GetErrMsg() string {
if m != nil {
return m.ErrMsg
}
return ""
}
func init() { func init() {
proto.RegisterType((*OnlinePushMsgReq)(nil), "relay.OnlinePushMsgReq") proto.RegisterType((*OnlinePushMsgReq)(nil), "relay.OnlinePushMsgReq")
proto.RegisterType((*OnlinePushMsgResp)(nil), "relay.OnlinePushMsgResp") proto.RegisterType((*OnlinePushMsgResp)(nil), "relay.OnlinePushMsgResp")
@ -688,6 +796,8 @@ func init() {
proto.RegisterType((*GetUsersOnlineStatusResp_SuccessResult)(nil), "relay.GetUsersOnlineStatusResp.SuccessResult") proto.RegisterType((*GetUsersOnlineStatusResp_SuccessResult)(nil), "relay.GetUsersOnlineStatusResp.SuccessResult")
proto.RegisterType((*KickUserOfflineReq)(nil), "relay.KickUserOfflineReq") proto.RegisterType((*KickUserOfflineReq)(nil), "relay.KickUserOfflineReq")
proto.RegisterType((*KickUserOfflineResp)(nil), "relay.KickUserOfflineResp") proto.RegisterType((*KickUserOfflineResp)(nil), "relay.KickUserOfflineResp")
proto.RegisterType((*MultiTerminalLoginCheckReq)(nil), "relay.MultiTerminalLoginCheckReq")
proto.RegisterType((*MultiTerminalLoginCheckResp)(nil), "relay.MultiTerminalLoginCheckResp")
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
@ -706,6 +816,7 @@ type RelayClient interface {
OnlineBatchPushOneMsg(ctx context.Context, in *OnlineBatchPushOneMsgReq, opts ...grpc.CallOption) (*OnlineBatchPushOneMsgResp, error) OnlineBatchPushOneMsg(ctx context.Context, in *OnlineBatchPushOneMsgReq, opts ...grpc.CallOption) (*OnlineBatchPushOneMsgResp, error)
SuperGroupOnlineBatchPushOneMsg(ctx context.Context, in *OnlineBatchPushOneMsgReq, opts ...grpc.CallOption) (*OnlineBatchPushOneMsgResp, error) SuperGroupOnlineBatchPushOneMsg(ctx context.Context, in *OnlineBatchPushOneMsgReq, opts ...grpc.CallOption) (*OnlineBatchPushOneMsgResp, error)
KickUserOffline(ctx context.Context, in *KickUserOfflineReq, opts ...grpc.CallOption) (*KickUserOfflineResp, error) KickUserOffline(ctx context.Context, in *KickUserOfflineReq, opts ...grpc.CallOption) (*KickUserOfflineResp, error)
MultiTerminalLoginCheck(ctx context.Context, in *MultiTerminalLoginCheckReq, opts ...grpc.CallOption) (*MultiTerminalLoginCheckResp, error)
} }
type relayClient struct { type relayClient struct {
@ -761,6 +872,15 @@ func (c *relayClient) KickUserOffline(ctx context.Context, in *KickUserOfflineRe
return out, nil return out, nil
} }
func (c *relayClient) MultiTerminalLoginCheck(ctx context.Context, in *MultiTerminalLoginCheckReq, opts ...grpc.CallOption) (*MultiTerminalLoginCheckResp, error) {
out := new(MultiTerminalLoginCheckResp)
err := grpc.Invoke(ctx, "/relay.relay/MultiTerminalLoginCheck", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for Relay service // Server API for Relay service
type RelayServer interface { type RelayServer interface {
@ -769,6 +889,7 @@ type RelayServer interface {
OnlineBatchPushOneMsg(context.Context, *OnlineBatchPushOneMsgReq) (*OnlineBatchPushOneMsgResp, error) OnlineBatchPushOneMsg(context.Context, *OnlineBatchPushOneMsgReq) (*OnlineBatchPushOneMsgResp, error)
SuperGroupOnlineBatchPushOneMsg(context.Context, *OnlineBatchPushOneMsgReq) (*OnlineBatchPushOneMsgResp, error) SuperGroupOnlineBatchPushOneMsg(context.Context, *OnlineBatchPushOneMsgReq) (*OnlineBatchPushOneMsgResp, error)
KickUserOffline(context.Context, *KickUserOfflineReq) (*KickUserOfflineResp, error) KickUserOffline(context.Context, *KickUserOfflineReq) (*KickUserOfflineResp, error)
MultiTerminalLoginCheck(context.Context, *MultiTerminalLoginCheckReq) (*MultiTerminalLoginCheckResp, error)
} }
func RegisterRelayServer(s *grpc.Server, srv RelayServer) { func RegisterRelayServer(s *grpc.Server, srv RelayServer) {
@ -865,6 +986,24 @@ func _Relay_KickUserOffline_Handler(srv interface{}, ctx context.Context, dec fu
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Relay_MultiTerminalLoginCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MultiTerminalLoginCheckReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RelayServer).MultiTerminalLoginCheck(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/relay.relay/MultiTerminalLoginCheck",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RelayServer).MultiTerminalLoginCheck(ctx, req.(*MultiTerminalLoginCheckReq))
}
return interceptor(ctx, in, info, handler)
}
var _Relay_serviceDesc = grpc.ServiceDesc{ var _Relay_serviceDesc = grpc.ServiceDesc{
ServiceName: "relay.relay", ServiceName: "relay.relay",
HandlerType: (*RelayServer)(nil), HandlerType: (*RelayServer)(nil),
@ -889,60 +1028,68 @@ var _Relay_serviceDesc = grpc.ServiceDesc{
MethodName: "KickUserOffline", MethodName: "KickUserOffline",
Handler: _Relay_KickUserOffline_Handler, Handler: _Relay_KickUserOffline_Handler,
}, },
{
MethodName: "MultiTerminalLoginCheck",
Handler: _Relay_MultiTerminalLoginCheck_Handler,
},
}, },
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{},
Metadata: "relay/relay.proto", Metadata: "relay/relay.proto",
} }
func init() { proto.RegisterFile("relay/relay.proto", fileDescriptor_relay_9ac412c3c8c99f28) } func init() { proto.RegisterFile("relay/relay.proto", fileDescriptor_relay_e9fd8824fb6cabec) }
var fileDescriptor_relay_9ac412c3c8c99f28 = []byte{ var fileDescriptor_relay_e9fd8824fb6cabec = []byte{
// 737 bytes of a gzipped FileDescriptorProto // 809 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xcd, 0x4e, 0xdb, 0x5a, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x4d, 0x4f, 0xdb, 0x4c,
0x10, 0x96, 0x31, 0xe1, 0x67, 0x80, 0x0b, 0x9c, 0x0b, 0x17, 0xe3, 0x45, 0xc8, 0xf5, 0xe2, 0x2a, 0x10, 0x96, 0x49, 0xc2, 0xc7, 0x00, 0x2f, 0xb0, 0x2f, 0x34, 0xc6, 0x95, 0x42, 0xf0, 0xa1, 0x8a,
0xba, 0x6a, 0x13, 0x29, 0xed, 0xae, 0x3b, 0x88, 0xa0, 0x51, 0x89, 0x82, 0x4e, 0x5a, 0xb5, 0x62, 0xaa, 0x36, 0x91, 0xd2, 0xde, 0x7a, 0x83, 0x08, 0x1a, 0x95, 0x28, 0x68, 0x43, 0xd5, 0x8a, 0x4b,
0x13, 0x99, 0xe4, 0x24, 0x58, 0x71, 0xe2, 0xc3, 0x19, 0x1b, 0xc4, 0xa6, 0xdb, 0xee, 0xfa, 0x08, 0x6a, 0x92, 0x4d, 0x62, 0xc5, 0xb1, 0x97, 0x5d, 0x1b, 0xc4, 0xa5, 0xd7, 0x5e, 0xaa, 0x1e, 0xfa,
0x5d, 0xf4, 0x09, 0xba, 0xeb, 0xeb, 0x55, 0xe7, 0x27, 0xae, 0x9d, 0x1f, 0x28, 0x0b, 0x36, 0x90, 0x03, 0x7a, 0xe8, 0x9f, 0xe8, 0xdf, 0xab, 0xf6, 0x23, 0xa9, 0x9d, 0xc4, 0xa4, 0x54, 0xe2, 0x02,
0x99, 0x33, 0xe7, 0x9b, 0xf9, 0xbe, 0x19, 0x8f, 0x0d, 0xbb, 0x82, 0x85, 0xfe, 0x7d, 0x55, 0xfd, 0x99, 0xd9, 0xd9, 0x99, 0x79, 0x9e, 0x79, 0x76, 0xd7, 0xb0, 0xc3, 0x88, 0xe7, 0xdc, 0x55, 0xe4,
0xad, 0x70, 0x11, 0xc5, 0x11, 0x29, 0x28, 0xc3, 0xfd, 0xb7, 0xc5, 0xd9, 0xb8, 0xd3, 0x68, 0x56, 0xdf, 0x32, 0x65, 0x41, 0x18, 0xa0, 0x9c, 0x34, 0xac, 0xc3, 0x26, 0x25, 0x7e, 0xbb, 0xde, 0xa8,
0xf9, 0x70, 0x50, 0x55, 0x27, 0x55, 0xec, 0x0d, 0x3b, 0x77, 0x58, 0xbd, 0x43, 0x1d, 0xe9, 0x7d, 0xd0, 0x61, 0xbf, 0x22, 0x57, 0x2a, 0xbc, 0x3b, 0x6c, 0xdf, 0xf2, 0xca, 0x2d, 0x57, 0x91, 0xf6,
0xb5, 0x60, 0xa7, 0x35, 0x0e, 0x83, 0x31, 0xbb, 0x48, 0xf0, 0xba, 0x89, 0x03, 0xca, 0x6e, 0x48, 0x37, 0x03, 0xb6, 0x9b, 0xbe, 0xe7, 0xfa, 0xe4, 0x3c, 0xe2, 0x83, 0x06, 0xef, 0x63, 0x72, 0x8d,
0x09, 0x36, 0x5a, 0x9c, 0x09, 0x3f, 0x0e, 0xa2, 0x71, 0xa3, 0xee, 0x58, 0x25, 0xab, 0xbc, 0x4e, 0x8a, 0xb0, 0xde, 0xa4, 0x84, 0x39, 0xa1, 0x1b, 0xf8, 0xf5, 0x9a, 0x69, 0x14, 0x8d, 0xd2, 0x1a,
0xb3, 0x2e, 0xf2, 0x1a, 0x56, 0x47, 0x38, 0xa8, 0xfb, 0xb1, 0xef, 0x2c, 0x95, 0xac, 0xf2, 0x46, 0x8e, 0xbb, 0xd0, 0x6b, 0x58, 0x19, 0xf1, 0x7e, 0xcd, 0x09, 0x1d, 0x73, 0xa9, 0x68, 0x94, 0xd6,
0xcd, 0xad, 0x20, 0x13, 0xb7, 0x4c, 0x74, 0x7c, 0x1e, 0x74, 0xb8, 0x2f, 0xfc, 0x11, 0x56, 0x9a, 0xab, 0x56, 0x99, 0x13, 0x76, 0x43, 0x58, 0xdb, 0xa1, 0x6e, 0x9b, 0x3a, 0xcc, 0x19, 0xf1, 0x72,
0x3a, 0x82, 0x4e, 0x42, 0x89, 0x07, 0x9b, 0x3c, 0xc1, 0xeb, 0xf7, 0xd1, 0x07, 0x64, 0xa2, 0x51, 0x43, 0x45, 0xe0, 0x71, 0x28, 0xb2, 0x61, 0x83, 0x46, 0x7c, 0x70, 0x11, 0xbc, 0xe7, 0x84, 0xd5,
0x77, 0x6c, 0x05, 0x9c, 0xf3, 0x79, 0x67, 0xb0, 0x3b, 0x55, 0x0f, 0x72, 0x52, 0x83, 0x65, 0xc1, 0x6b, 0x66, 0x46, 0x26, 0x4e, 0xf8, 0xec, 0x53, 0xd8, 0x99, 0xea, 0x87, 0x53, 0x54, 0x85, 0x2c,
0x90, 0x3b, 0x56, 0xc9, 0x2e, 0x6f, 0xd4, 0x8a, 0x15, 0xcd, 0xb5, 0x1d, 0x8c, 0x07, 0x21, 0x6b, 0x23, 0x9c, 0x9a, 0x46, 0x31, 0x53, 0x5a, 0xaf, 0x16, 0xca, 0x0a, 0x6b, 0xcb, 0xf5, 0xfb, 0x1e,
0xe2, 0x40, 0x5f, 0xbe, 0x08, 0xfd, 0xb8, 0x1f, 0x89, 0x11, 0x55, 0xb1, 0xde, 0x17, 0x0b, 0x0e, 0x69, 0xf0, 0xbe, 0xda, 0x7c, 0xee, 0x39, 0x61, 0x2f, 0x60, 0x23, 0x2c, 0x63, 0xed, 0x2f, 0x06,
0x65, 0x04, 0x0b, 0xd3, 0x08, 0xca, 0x30, 0x09, 0xe3, 0xf3, 0x00, 0x63, 0xf2, 0x0f, 0xac, 0x24, 0xec, 0x8b, 0x08, 0xe2, 0x4d, 0x22, 0x30, 0xe1, 0x91, 0x17, 0x9e, 0xb9, 0x3c, 0x44, 0x4f, 0x60,
0xba, 0x08, 0xcd, 0xce, 0x58, 0x69, 0xa6, 0xa5, 0x3f, 0xcf, 0x44, 0x8a, 0x00, 0x51, 0x5a, 0xb2, 0x39, 0x52, 0x4d, 0x28, 0x74, 0xda, 0x9a, 0x54, 0x5a, 0xfa, 0xfb, 0x4a, 0xa8, 0x00, 0x10, 0x4c,
0x22, 0xb5, 0x46, 0x33, 0x1e, 0xef, 0x9b, 0x05, 0x8e, 0xe6, 0x74, 0xec, 0xc7, 0xdd, 0x6b, 0xe9, 0x5a, 0x96, 0xa0, 0x56, 0x71, 0xcc, 0x63, 0xff, 0x30, 0xc0, 0x54, 0x98, 0x8e, 0x9c, 0xb0, 0x33,
0x6b, 0x8d, 0xd9, 0x33, 0x6b, 0xfd, 0x3f, 0xec, 0x64, 0x75, 0x95, 0xa4, 0x1d, 0xbb, 0x64, 0x97, 0x10, 0xbe, 0xa6, 0x4f, 0x1e, 0x99, 0xeb, 0xe7, 0xb0, 0x1d, 0xe7, 0x55, 0x80, 0x36, 0x33, 0xc5,
0xd7, 0xe9, 0x8c, 0xdf, 0x0b, 0xe0, 0x70, 0x41, 0x7d, 0xc8, 0xc9, 0x39, 0xec, 0xa0, 0xa2, 0x2f, 0x4c, 0x69, 0x0d, 0xcf, 0xf8, 0x6d, 0x17, 0xf6, 0x53, 0xfa, 0xe3, 0x14, 0x9d, 0xc1, 0x36, 0x97,
0xfd, 0x5a, 0x41, 0xd3, 0x87, 0x52, 0x46, 0x9d, 0xb9, 0x2a, 0xd3, 0x99, 0x9b, 0xde, 0x3d, 0x1c, 0xf0, 0x85, 0x5f, 0x31, 0xa8, 0xe7, 0x50, 0x8c, 0xb1, 0x33, 0x97, 0x65, 0x3c, 0xb3, 0xd3, 0xbe,
0x2c, 0x10, 0x53, 0xca, 0xa8, 0x83, 0x4e, 0xa2, 0x1e, 0x53, 0x42, 0xd8, 0x34, 0xe3, 0x91, 0x2d, 0x83, 0x7c, 0x0a, 0x99, 0x82, 0x46, 0x15, 0x74, 0x1c, 0x74, 0x89, 0x24, 0x22, 0x83, 0x63, 0x1e,
0xa3, 0xac, 0x7b, 0xdb, 0xa8, 0x2b, 0x19, 0xd6, 0xa9, 0xb1, 0xc8, 0x7f, 0xf0, 0x97, 0xfc, 0x25, 0x31, 0x32, 0x4c, 0x3a, 0x37, 0xf5, 0x9a, 0xa4, 0x61, 0x0d, 0x6b, 0x0b, 0x3d, 0x83, 0xff, 0xc4,
0x71, 0x4e, 0x23, 0x31, 0x32, 0x73, 0x55, 0xa0, 0x53, 0x5e, 0xef, 0x0e, 0x0e, 0xce, 0x58, 0x2c, 0x2f, 0x91, 0xe7, 0x24, 0x60, 0x23, 0xad, 0xab, 0x1c, 0x9e, 0xf2, 0xda, 0xb7, 0x90, 0x3f, 0x25,
0x53, 0xa2, 0x66, 0xdb, 0x8e, 0xfd, 0x38, 0x41, 0xd9, 0x84, 0x22, 0x40, 0xf2, 0x5b, 0x26, 0x4b, 0xa1, 0x28, 0xc9, 0x15, 0xda, 0x56, 0xe8, 0x84, 0x11, 0x17, 0x43, 0x28, 0x00, 0x44, 0x7f, 0x68,
0xc9, 0x94, 0xf1, 0xc8, 0x26, 0x45, 0x99, 0x26, 0xe9, 0xfc, 0x59, 0x17, 0x71, 0x61, 0x2d, 0xe2, 0x32, 0x24, 0x4d, 0x31, 0x8f, 0x18, 0x52, 0x10, 0x1b, 0x92, 0xaa, 0x1f, 0x77, 0x21, 0x0b, 0x56,
0xb9, 0xb1, 0x4e, 0x6d, 0xef, 0xe7, 0x32, 0x38, 0xf3, 0x33, 0x23, 0x27, 0x0e, 0xac, 0x32, 0x21, 0x03, 0x9a, 0x90, 0xf5, 0xc4, 0xb6, 0x7f, 0x65, 0xc1, 0x9c, 0x5f, 0x99, 0x53, 0x64, 0xc2, 0x0a,
0x52, 0xca, 0x05, 0x3a, 0x31, 0x25, 0x5f, 0x26, 0x44, 0x13, 0x07, 0x13, 0xbe, 0xda, 0x22, 0x6d, 0x61, 0x6c, 0x02, 0x39, 0x87, 0xc7, 0xa6, 0xc0, 0x4b, 0x18, 0x6b, 0xf0, 0xfe, 0x18, 0xaf, 0xb2,
0xd8, 0xc2, 0xa4, 0xdb, 0x65, 0x88, 0xa6, 0x1b, 0xb6, 0xea, 0xc6, 0x4b, 0xd3, 0x8d, 0x45, 0x99, 0x50, 0x0b, 0x36, 0x79, 0xd4, 0xe9, 0x10, 0xce, 0xf5, 0x34, 0x32, 0x72, 0x1a, 0x2f, 0xf5, 0x34,
0x2a, 0xed, 0xec, 0x25, 0x9a, 0xc7, 0x20, 0x17, 0xb0, 0xd9, 0xf7, 0x83, 0x90, 0xf5, 0x0c, 0xe6, 0xd2, 0x2a, 0x95, 0x5b, 0xf1, 0x4d, 0x38, 0x99, 0x03, 0x9d, 0xc3, 0x46, 0xcf, 0x71, 0x3d, 0xd2,
0xb2, 0xc2, 0x7c, 0xf1, 0x18, 0xe6, 0xa9, 0xba, 0x53, 0x67, 0xb1, 0x1f, 0x84, 0x34, 0x87, 0xe0, 0xd5, 0x39, 0xb3, 0x32, 0xe7, 0x8b, 0x45, 0x39, 0x4f, 0xe4, 0x9e, 0x1a, 0x09, 0x1d, 0xd7, 0xc3,
0x9e, 0xc0, 0x96, 0xc9, 0xa8, 0x8f, 0xa5, 0x44, 0xdc, 0xf4, 0xda, 0x8c, 0x79, 0x6a, 0x4b, 0xae, 0x89, 0x0c, 0xd6, 0x31, 0x6c, 0xea, 0x8a, 0x6a, 0x59, 0x50, 0x44, 0xf5, 0xac, 0xb5, 0xcc, 0x27,
0xa8, 0x50, 0x27, 0x5c, 0xb5, 0xe5, 0x7e, 0x82, 0xcd, 0x6c, 0x8a, 0xcc, 0x63, 0x6b, 0xe7, 0x1e, 0xb6, 0xc0, 0xca, 0x65, 0xd6, 0x31, 0x56, 0x65, 0x59, 0x1f, 0x61, 0x23, 0x5e, 0x22, 0x76, 0x6c,
0xdb, 0x27, 0xab, 0xe8, 0x7e, 0xb7, 0xd2, 0xfa, 0x8c, 0x04, 0x8b, 0x56, 0xc2, 0x82, 0xda, 0x88, 0x33, 0x89, 0x63, 0xfb, 0x60, 0x16, 0xad, 0x9f, 0xc6, 0xa4, 0x3f, 0x4d, 0x41, 0xda, 0x95, 0x90,
0x0f, 0x7b, 0x3d, 0x55, 0xd5, 0x64, 0x82, 0xb5, 0x2e, 0x4f, 0x6c, 0x87, 0xd1, 0x6e, 0x2e, 0x94, 0xd2, 0x1b, 0x72, 0x60, 0xb7, 0x2b, 0xbb, 0x1a, 0x2b, 0x58, 0xf1, 0xf2, 0xc0, 0x71, 0x68, 0xee,
0xf7, 0x19, 0xc8, 0xbb, 0xa0, 0x3b, 0x94, 0x00, 0xad, 0x7e, 0x5f, 0x02, 0x98, 0x95, 0x11, 0xcd, 0xe6, 0xa6, 0xb2, 0x3f, 0x03, 0x7a, 0xe7, 0x76, 0x86, 0x22, 0x41, 0xb3, 0xd7, 0x13, 0x09, 0xf4,
0xae, 0x8c, 0xec, 0x34, 0x16, 0x01, 0x26, 0xd2, 0x9a, 0x71, 0x2d, 0xd0, 0x8c, 0x47, 0x3e, 0x32, 0x95, 0x11, 0xcc, 0x5e, 0x19, 0x71, 0x35, 0x16, 0x00, 0xc6, 0xd4, 0x6a, 0xb9, 0xe6, 0x70, 0xcc,
0x43, 0x83, 0x9b, 0x5b, 0x0d, 0x53, 0x5e, 0x6f, 0x1f, 0xfe, 0x9e, 0xc9, 0x8f, 0xbc, 0xf6, 0xc3, 0x23, 0x8e, 0xcc, 0x50, 0xe7, 0x4d, 0x5c, 0x0d, 0x53, 0x5e, 0x7b, 0x0f, 0xfe, 0x9f, 0xa9, 0xcf,
0x06, 0xfd, 0x86, 0x21, 0xc7, 0xb0, 0x95, 0xdb, 0xd6, 0xe4, 0xc0, 0xd0, 0x9e, 0x7e, 0xa7, 0xb8, 0xa9, 0xfd, 0xd5, 0x00, 0xab, 0x11, 0x79, 0xa1, 0x7b, 0x41, 0xd8, 0xc8, 0xf5, 0x1d, 0xef, 0x2c,
0xce, 0xfc, 0x03, 0xe4, 0xe4, 0x23, 0xec, 0xcd, 0x13, 0x89, 0x14, 0x1f, 0x54, 0xf0, 0xc6, 0x3d, 0xe8, 0xbb, 0xfe, 0xf1, 0x80, 0x74, 0x86, 0xa2, 0xbf, 0x34, 0x22, 0x17, 0x75, 0xb5, 0x0b, 0xb9,
0x7a, 0x44, 0x61, 0x72, 0x09, 0xfb, 0x73, 0xd7, 0x1a, 0x39, 0xca, 0xd5, 0x32, 0xbb, 0x94, 0xdd, 0x30, 0x18, 0x12, 0x5f, 0xcf, 0x56, 0x19, 0xd3, 0x68, 0xb3, 0x33, 0x68, 0xed, 0x26, 0x3c, 0x4d,
0xd2, 0xc3, 0x01, 0xc8, 0x49, 0x0f, 0x8e, 0xda, 0x09, 0x67, 0xe2, 0x4c, 0x44, 0x09, 0x7f, 0xb6, 0xed, 0xe6, 0x5f, 0x4e, 0x58, 0xf5, 0x7b, 0x16, 0xd4, 0x0b, 0x8a, 0x8e, 0x60, 0x33, 0xf1, 0x1a,
0x2c, 0x6f, 0x61, 0x7b, 0x4a, 0x7f, 0x72, 0x68, 0x2e, 0xcd, 0xce, 0x85, 0xeb, 0x2e, 0x3a, 0x42, 0xa1, 0xbc, 0x1e, 0xeb, 0xf4, 0x9b, 0x69, 0x99, 0xf3, 0x17, 0x38, 0x45, 0x1f, 0x60, 0x77, 0x9e,
0x7e, 0xbc, 0x7b, 0xb9, 0x5d, 0xd1, 0x9f, 0x08, 0x6f, 0xf8, 0x15, 0x95, 0xff, 0xaf, 0x56, 0xd4, 0x08, 0x50, 0xe1, 0x5e, 0x85, 0x5c, 0x5b, 0x07, 0x0b, 0x14, 0x84, 0x2e, 0x61, 0x6f, 0xee, 0xb5,
0x17, 0xc0, 0xab, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x08, 0x9a, 0x1f, 0x1c, 0x40, 0x08, 0x00, 0x8d, 0x0e, 0x12, 0xbd, 0xcc, 0x3e, 0x3a, 0x56, 0xf1, 0xfe, 0x00, 0x4e, 0x51, 0x17, 0x0e, 0x5a,
0x00, 0x11, 0x25, 0xec, 0x94, 0x05, 0x11, 0x7d, 0xb4, 0x2a, 0x6f, 0x61, 0x6b, 0x4a, 0x5f, 0x68, 0x5f,
0x6f, 0x9a, 0xd5, 0xbd, 0x65, 0xa5, 0x2d, 0x71, 0x8a, 0x3e, 0x41, 0x3e, 0x45, 0x03, 0xe8, 0x50,
0x6f, 0x4b, 0x57, 0xac, 0x65, 0x2f, 0x0a, 0xe1, 0xf4, 0x68, 0xe7, 0x72, 0xab, 0xac, 0x3e, 0xb2,
0xde, 0xd0, 0x2b, 0x2c, 0xfe, 0x5f, 0x2d, 0xcb, 0x6f, 0xa8, 0x57, 0xbf, 0x03, 0x00, 0x00, 0xff,
0xff, 0x8e, 0xbc, 0x1c, 0xdc, 0x82, 0x09, 0x00, 0x00,
} }

View File

@ -76,12 +76,26 @@ int32 platformID = 2;
message KickUserOfflineResp{ message KickUserOfflineResp{
} }
message MultiTerminalLoginCheckReq{
string userID = 1;
int32 platformID = 2;
string token = 3;
string operationID = 4;
}
message MultiTerminalLoginCheckResp{
int32 errCode = 1;
string errMsg = 2;
}
service relay { service relay {
rpc OnlinePushMsg(OnlinePushMsgReq) returns(OnlinePushMsgResp); rpc OnlinePushMsg(OnlinePushMsgReq) returns(OnlinePushMsgResp);
rpc GetUsersOnlineStatus(GetUsersOnlineStatusReq) returns(GetUsersOnlineStatusResp); rpc GetUsersOnlineStatus(GetUsersOnlineStatusReq) returns(GetUsersOnlineStatusResp);
rpc OnlineBatchPushOneMsg(OnlineBatchPushOneMsgReq) returns(OnlineBatchPushOneMsgResp); rpc OnlineBatchPushOneMsg(OnlineBatchPushOneMsgReq) returns(OnlineBatchPushOneMsgResp);
rpc SuperGroupOnlineBatchPushOneMsg(OnlineBatchPushOneMsgReq) returns(OnlineBatchPushOneMsgResp); rpc SuperGroupOnlineBatchPushOneMsg(OnlineBatchPushOneMsgReq) returns(OnlineBatchPushOneMsgResp);
rpc KickUserOffline(KickUserOfflineReq) returns(KickUserOfflineResp); rpc KickUserOffline(KickUserOfflineReq) returns(KickUserOfflineResp);
// rpc SendMsgByWS(SendMsgByWSReq) returns(MsgToUserResp); rpc MultiTerminalLoginCheck(MultiTerminalLoginCheckReq) returns(MultiTerminalLoginCheckResp);
} }