notification

pull/141/head
skiffer-git 3 years ago
parent a328080ba4
commit 7adde6a0a9

@ -160,6 +160,19 @@ messagecallback:
stateChange:
switch: false
notification:
offlinePush:
switch: true
createGroup:
title: "create group title"
desc: "create group desc"
ext: "create group ext"
quitGroup:
title: "quit group title"
desc: "quit group desc"
ext: "quit group ext"
#---------------demo configuration---------------------#
#The following configuration items are applied to openIM Demo configuration
demoswitch: true

@ -6,6 +6,7 @@ import (
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/db"
"Open_IM/pkg/common/db/mysql_model/im_mysql_model"
http2 "Open_IM/pkg/common/http"
"Open_IM/pkg/common/log"
"Open_IM/pkg/grpc-etcdv3/getcdv3"
@ -203,17 +204,35 @@ type WSToMsgSvrChatMsg struct {
OperationID string `protobuf:"bytes,10,opt,name=OperationID" json:"OperationID,omitempty"`
}
func CreateGroupNotification(SendID, RecvID string, tip open_im_sdk.CreateGroupTip) {
func CreateGroupNotification(sendID string, creator im_mysql_model.User, group im_mysql_model.Group, memberList []im_mysql_model.GroupMember) {
var msg WSToMsgSvrChatMsg
msg.OperationID = utils.OperationIDGenerator()
msg.SendID = SendID
msg.RecvID = RecvID
msg.SendID = sendID
msg.RecvID = group.GroupId
msg.ContentType = constant.CreateGroupTip
msg.SessionType = constant.SysMsgType
msg.SessionType = constant.GroupChatType
msg.MsgFrom = constant.SysMsgType
var tip open_im_sdk.CreateGroupTip
tip.Group = &open_im_sdk.GroupInfoTip{}
utils.CopyStructFields(tip.Group, group)
tip.Creator = &open_im_sdk.UserInfoTip{}
utils.CopyStructFields(tip.Creator, creator)
for _, v := range memberList {
var groupMemberInfo open_im_sdk.GroupMemberFullInfoTip
utils.CopyStructFields(&groupMemberInfo, v)
tip.MemberList = append(tip.MemberList, &groupMemberInfo)
}
msg.Content = utils.StructToJsonString(tip)
var offlinePushInfo open_im_sdk.OfflinePushInfo
offlinePushInfo.Title = "create group title"
offlinePushInfo.Desc = "create group desc"
offlinePushInfo.Ext = "create group ext"
Notification(&msg, false, offlinePushInfo)
}
func Notification(m *WSToMsgSvrChatMsg, onlineUserOnly bool, offlineInfo open_im_sdk.OfflinePushInfo) {
func Notification(m *WSToMsgSvrChatMsg, onlineUserOnly bool, offlinePushInfo open_im_sdk.OfflinePushInfo) {
}

@ -3,6 +3,7 @@ package group
import (
"Open_IM/internal/push/content_struct"
"Open_IM/internal/push/logic"
"Open_IM/internal/rpc/chat"
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/db"
@ -12,6 +13,7 @@ import (
"Open_IM/pkg/grpc-etcdv3/getcdv3"
pbChat "Open_IM/pkg/proto/chat"
pbGroup "Open_IM/pkg/proto/group"
open_im_sdk "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils"
"context"
"google.golang.org/grpc"
@ -157,6 +159,23 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
})
}
var tip open_im_sdk.CreateGroupTip
groupInfo, err := im_mysql_model.FindGroupInfoByGroupId(groupId)
if err != nil {
return &pbGroup.CreateGroupResp{ErrorCode: constant.ErrCreateGroup.ErrCode, ErrorMsg: constant.ErrCreateGroup.ErrMsg}, nil
}
creatorInfo, err := im_mysql_model.FindUserByUID(claims.UID)
if err != nil {
}
memberList, err := im_mysql_model.FindGroupMemberListByGroupId(groupId)
if err != nil {
}
chat.CreateGroupNotification(claims.UID, *creatorInfo, *groupInfo, memberList)
log.Info(req.Token, req.OperationID, "rpc create group success return")
return &pbGroup.CreateGroupResp{GroupID: groupId}, nil
}

@ -1,7 +1,7 @@
package config
import (
"gopkg.in/yaml.v3"
"fmt"
"io/ioutil"
"path/filepath"
"runtime"
@ -172,6 +172,21 @@ type config struct {
SmtpPort int `yaml:"smtpPort"`
}
}
Notification struct {
OfflinePush struct {
Switch bool `yaml:"switch"`
}
CreateGroup struct {
Title string `yaml:"title"`
Desc string `yaml:"desc"`
Ext string `yaml:"ext"`
}
QuiteGroup struct {
Title string `yaml:"title"`
Desc string `yaml:"desc"`
Ext string `yaml:"ext"`
}
}
}
func init() {
@ -186,5 +201,5 @@ func init() {
if err = yaml.Unmarshal(bytes, &Config); err != nil {
panic(err.Error())
}
fmt.Println("init load config: ", Config)
}

@ -32,7 +32,7 @@ func (m *PullMessageBySeqListResp) Reset() { *m = PullMessageBySeqListRe
func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) }
func (*PullMessageBySeqListResp) ProtoMessage() {}
func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{0}
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{0}
}
func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b)
@ -91,7 +91,7 @@ func (m *PullMessageBySeqListReq) Reset() { *m = PullMessageBySeqListReq
func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) }
func (*PullMessageBySeqListReq) ProtoMessage() {}
func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{1}
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{1}
}
func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b)
@ -128,7 +128,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} }
func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqReq) ProtoMessage() {}
func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{2}
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{2}
}
func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b)
@ -160,7 +160,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} }
func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqResp) ProtoMessage() {}
func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{3}
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{3}
}
func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b)
@ -208,7 +208,7 @@ func (m *GatherFormat) Reset() { *m = GatherFormat{} }
func (m *GatherFormat) String() string { return proto.CompactTextString(m) }
func (*GatherFormat) ProtoMessage() {}
func (*GatherFormat) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{4}
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{4}
}
func (m *GatherFormat) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GatherFormat.Unmarshal(m, b)
@ -276,7 +276,7 @@ func (m *MsgFormat) Reset() { *m = MsgFormat{} }
func (m *MsgFormat) String() string { return proto.CompactTextString(m) }
func (*MsgFormat) ProtoMessage() {}
func (*MsgFormat) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{5}
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{5}
}
func (m *MsgFormat) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MsgFormat.Unmarshal(m, b)
@ -401,7 +401,7 @@ func (m *UserSendMsgReq) Reset() { *m = UserSendMsgReq{} }
func (m *UserSendMsgReq) String() string { return proto.CompactTextString(m) }
func (*UserSendMsgReq) ProtoMessage() {}
func (*UserSendMsgReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{6}
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{6}
}
func (m *UserSendMsgReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserSendMsgReq.Unmarshal(m, b)
@ -511,7 +511,7 @@ func (m *UserSendMsgResp) Reset() { *m = UserSendMsgResp{} }
func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) }
func (*UserSendMsgResp) ProtoMessage() {}
func (*UserSendMsgResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{7}
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{7}
}
func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b)
@ -575,7 +575,7 @@ func (m *MsgData) Reset() { *m = MsgData{} }
func (m *MsgData) String() string { return proto.CompactTextString(m) }
func (*MsgData) ProtoMessage() {}
func (*MsgData) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{8}
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{8}
}
func (m *MsgData) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MsgData.Unmarshal(m, b)
@ -699,7 +699,7 @@ func (m *OfflinePushInfo) Reset() { *m = OfflinePushInfo{} }
func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) }
func (*OfflinePushInfo) ProtoMessage() {}
func (*OfflinePushInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{9}
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{9}
}
func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b)
@ -759,7 +759,7 @@ func (m *GroupInfoTip) Reset() { *m = GroupInfoTip{} }
func (m *GroupInfoTip) String() string { return proto.CompactTextString(m) }
func (*GroupInfoTip) ProtoMessage() {}
func (*GroupInfoTip) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{10}
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{10}
}
func (m *GroupInfoTip) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupInfoTip.Unmarshal(m, b)
@ -842,6 +842,138 @@ func (m *GroupInfoTip) GetMemberCount() uint32 {
return 0
}
type GroupMemberFullInfoTip struct {
GroupId string `protobuf:"bytes,1,opt,name=GroupId" json:"GroupId,omitempty"`
UserId string `protobuf:"bytes,2,opt,name=UserId" json:"UserId,omitempty"`
Role int32 `protobuf:"varint,3,opt,name=Role" json:"Role,omitempty"`
JoinTime uint64 `protobuf:"varint,4,opt,name=JoinTime" json:"JoinTime,omitempty"`
NickName string `protobuf:"bytes,5,opt,name=NickName" json:"NickName,omitempty"`
FaceUrl string `protobuf:"bytes,6,opt,name=FaceUrl" json:"FaceUrl,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GroupMemberFullInfoTip) Reset() { *m = GroupMemberFullInfoTip{} }
func (m *GroupMemberFullInfoTip) String() string { return proto.CompactTextString(m) }
func (*GroupMemberFullInfoTip) ProtoMessage() {}
func (*GroupMemberFullInfoTip) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{11}
}
func (m *GroupMemberFullInfoTip) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMemberFullInfoTip.Unmarshal(m, b)
}
func (m *GroupMemberFullInfoTip) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GroupMemberFullInfoTip.Marshal(b, m, deterministic)
}
func (dst *GroupMemberFullInfoTip) XXX_Merge(src proto.Message) {
xxx_messageInfo_GroupMemberFullInfoTip.Merge(dst, src)
}
func (m *GroupMemberFullInfoTip) XXX_Size() int {
return xxx_messageInfo_GroupMemberFullInfoTip.Size(m)
}
func (m *GroupMemberFullInfoTip) XXX_DiscardUnknown() {
xxx_messageInfo_GroupMemberFullInfoTip.DiscardUnknown(m)
}
var xxx_messageInfo_GroupMemberFullInfoTip proto.InternalMessageInfo
func (m *GroupMemberFullInfoTip) GetGroupId() string {
if m != nil {
return m.GroupId
}
return ""
}
func (m *GroupMemberFullInfoTip) GetUserId() string {
if m != nil {
return m.UserId
}
return ""
}
func (m *GroupMemberFullInfoTip) GetRole() int32 {
if m != nil {
return m.Role
}
return 0
}
func (m *GroupMemberFullInfoTip) GetJoinTime() uint64 {
if m != nil {
return m.JoinTime
}
return 0
}
func (m *GroupMemberFullInfoTip) GetNickName() string {
if m != nil {
return m.NickName
}
return ""
}
func (m *GroupMemberFullInfoTip) GetFaceUrl() string {
if m != nil {
return m.FaceUrl
}
return ""
}
type CreateGroupTip struct {
Group *GroupInfoTip `protobuf:"bytes,1,opt,name=Group" json:"Group,omitempty"`
Creator *UserInfoTip `protobuf:"bytes,2,opt,name=Creator" json:"Creator,omitempty"`
MemberList []*GroupMemberFullInfoTip `protobuf:"bytes,3,rep,name=MemberList" json:"MemberList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CreateGroupTip) Reset() { *m = CreateGroupTip{} }
func (m *CreateGroupTip) String() string { return proto.CompactTextString(m) }
func (*CreateGroupTip) ProtoMessage() {}
func (*CreateGroupTip) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{12}
}
func (m *CreateGroupTip) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateGroupTip.Unmarshal(m, b)
}
func (m *CreateGroupTip) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CreateGroupTip.Marshal(b, m, deterministic)
}
func (dst *CreateGroupTip) XXX_Merge(src proto.Message) {
xxx_messageInfo_CreateGroupTip.Merge(dst, src)
}
func (m *CreateGroupTip) XXX_Size() int {
return xxx_messageInfo_CreateGroupTip.Size(m)
}
func (m *CreateGroupTip) XXX_DiscardUnknown() {
xxx_messageInfo_CreateGroupTip.DiscardUnknown(m)
}
var xxx_messageInfo_CreateGroupTip proto.InternalMessageInfo
func (m *CreateGroupTip) GetGroup() *GroupInfoTip {
if m != nil {
return m.Group
}
return nil
}
func (m *CreateGroupTip) GetCreator() *UserInfoTip {
if m != nil {
return m.Creator
}
return nil
}
func (m *CreateGroupTip) GetMemberList() []*GroupMemberFullInfoTip {
if m != nil {
return m.MemberList
}
return nil
}
type UserInfoTip struct {
UserID string `protobuf:"bytes,1,opt,name=UserID" json:"UserID,omitempty"`
Name string `protobuf:"bytes,2,opt,name=Name" json:"Name,omitempty"`
@ -860,7 +992,7 @@ func (m *UserInfoTip) Reset() { *m = UserInfoTip{} }
func (m *UserInfoTip) String() string { return proto.CompactTextString(m) }
func (*UserInfoTip) ProtoMessage() {}
func (*UserInfoTip) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{11}
return fileDescriptor_ws_0e67cfdf7b3776b1, []int{13}
}
func (m *UserInfoTip) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInfoTip.Unmarshal(m, b)
@ -936,60 +1068,6 @@ func (m *UserInfoTip) GetEx() string {
return ""
}
type CreateGroupTip struct {
Group *GroupInfoTip `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"`
Creator *UserInfoTip `protobuf:"bytes,2,opt,name=creator" json:"creator,omitempty"`
MemberList []*UserInfoTip `protobuf:"bytes,3,rep,name=memberList" json:"memberList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CreateGroupTip) Reset() { *m = CreateGroupTip{} }
func (m *CreateGroupTip) String() string { return proto.CompactTextString(m) }
func (*CreateGroupTip) ProtoMessage() {}
func (*CreateGroupTip) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_d55c44e342c7a2b5, []int{12}
}
func (m *CreateGroupTip) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateGroupTip.Unmarshal(m, b)
}
func (m *CreateGroupTip) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CreateGroupTip.Marshal(b, m, deterministic)
}
func (dst *CreateGroupTip) XXX_Merge(src proto.Message) {
xxx_messageInfo_CreateGroupTip.Merge(dst, src)
}
func (m *CreateGroupTip) XXX_Size() int {
return xxx_messageInfo_CreateGroupTip.Size(m)
}
func (m *CreateGroupTip) XXX_DiscardUnknown() {
xxx_messageInfo_CreateGroupTip.DiscardUnknown(m)
}
var xxx_messageInfo_CreateGroupTip proto.InternalMessageInfo
func (m *CreateGroupTip) GetGroup() *GroupInfoTip {
if m != nil {
return m.Group
}
return nil
}
func (m *CreateGroupTip) GetCreator() *UserInfoTip {
if m != nil {
return m.Creator
}
return nil
}
func (m *CreateGroupTip) GetMemberList() []*UserInfoTip {
if m != nil {
return m.MemberList
}
return nil
}
func init() {
proto.RegisterType((*PullMessageBySeqListResp)(nil), "open_im_sdk.PullMessageBySeqListResp")
proto.RegisterType((*PullMessageBySeqListReq)(nil), "open_im_sdk.PullMessageBySeqListReq")
@ -1003,76 +1081,81 @@ func init() {
proto.RegisterType((*MsgData)(nil), "open_im_sdk.MsgData")
proto.RegisterType((*OfflinePushInfo)(nil), "open_im_sdk.OfflinePushInfo")
proto.RegisterType((*GroupInfoTip)(nil), "open_im_sdk.GroupInfoTip")
proto.RegisterType((*UserInfoTip)(nil), "open_im_sdk.UserInfoTip")
proto.RegisterType((*GroupMemberFullInfoTip)(nil), "open_im_sdk.GroupMemberFullInfoTip")
proto.RegisterType((*CreateGroupTip)(nil), "open_im_sdk.CreateGroupTip")
proto.RegisterType((*UserInfoTip)(nil), "open_im_sdk.UserInfoTip")
}
func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_d55c44e342c7a2b5) }
var fileDescriptor_ws_d55c44e342c7a2b5 = []byte{
// 1021 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xcb, 0x6e, 0x23, 0xb7,
0x12, 0x85, 0xba, 0xf5, 0x2c, 0xc9, 0xf6, 0x80, 0xd7, 0xf0, 0xed, 0x0c, 0x82, 0x40, 0x68, 0x04,
0x81, 0x30, 0x0b, 0x19, 0xf0, 0x6c, 0x06, 0x13, 0x04, 0x41, 0x6c, 0xc9, 0x86, 0x82, 0x91, 0x6d,
0xb4, 0x3c, 0x9b, 0x6c, 0x8c, 0x76, 0x8b, 0x92, 0x1b, 0xee, 0x87, 0xd4, 0xa4, 0x6c, 0xf9, 0x3f,
0xb2, 0xcd, 0x37, 0x64, 0x9d, 0x5f, 0xc8, 0x22, 0x7f, 0x14, 0x20, 0xa8, 0x22, 0x5b, 0x26, 0x25,
0xe7, 0xb1, 0xe3, 0x39, 0xaa, 0x22, 0x59, 0xe7, 0x54, 0xb5, 0x08, 0x07, 0x62, 0xfa, 0x70, 0xfb,
0x24, 0x8e, 0x9f, 0x44, 0x7f, 0x51, 0xe4, 0x32, 0x67, 0xed, 0x7c, 0xc1, 0xb3, 0xdb, 0x38, 0xbd,
0x15, 0xd3, 0x07, 0xff, 0xf7, 0x0a, 0x78, 0xd7, 0xab, 0x24, 0x19, 0x73, 0x21, 0xc2, 0x39, 0x3f,
0x7d, 0x9e, 0xf0, 0xe5, 0xa7, 0x58, 0xc8, 0x80, 0x8b, 0x05, 0x3b, 0x82, 0xfa, 0x38, 0x5c, 0x4f,
0xf8, 0xd2, 0xab, 0x74, 0x2b, 0x3d, 0x37, 0xd0, 0x88, 0xf8, 0x38, 0x43, 0xde, 0xd1, 0x3c, 0x21,
0xf6, 0x3d, 0xec, 0x4d, 0xe2, 0x6c, 0x9e, 0xf0, 0xcf, 0x82, 0x17, 0x63, 0x31, 0xf7, 0xdc, 0xae,
0xdb, 0x6b, 0x9f, 0x7c, 0xd1, 0x37, 0x4e, 0xec, 0x5f, 0x84, 0xf2, 0x9e, 0x17, 0xe7, 0x79, 0x91,
0x86, 0x32, 0xb0, 0xe3, 0xd9, 0x77, 0xd0, 0xb9, 0x28, 0xf2, 0xd5, 0xa2, 0xcc, 0xaf, 0xfe, 0x5b,
0xbe, 0x15, 0xee, 0xbf, 0x87, 0xff, 0xbf, 0x5e, 0xcb, 0x92, 0x79, 0xd0, 0x10, 0x0a, 0x79, 0x95,
0xae, 0xdb, 0x73, 0x83, 0x12, 0xfa, 0x87, 0xc0, 0x2e, 0xb8, 0x1c, 0x87, 0xeb, 0x1f, 0xb2, 0xa9,
0xaa, 0x23, 0xe0, 0x4b, 0x7f, 0x08, 0xff, 0xdb, 0x61, 0x95, 0x22, 0xa9, 0xa5, 0x48, 0xba, 0x51,
0x24, 0xb5, 0x14, 0x51, 0xc8, 0xff, 0x11, 0x3a, 0xe6, 0x7d, 0xd9, 0x3e, 0x38, 0xa3, 0x01, 0xe5,
0xb6, 0x02, 0x67, 0x34, 0x60, 0xef, 0xa0, 0x4a, 0x77, 0x72, 0xa8, 0xd0, 0x23, 0xab, 0xd0, 0xb1,
0x98, 0xeb, 0x2a, 0x29, 0xc6, 0xff, 0xd3, 0x81, 0xd6, 0x86, 0xc3, 0x13, 0x27, 0x3c, 0x9b, 0x6e,
0x76, 0xd3, 0x08, 0xf9, 0x80, 0x47, 0x8f, 0xa3, 0x01, 0xdd, 0xa4, 0x15, 0x68, 0x84, 0x02, 0x60,
0x72, 0x91, 0xa7, 0x9e, 0xdb, 0xad, 0xf4, 0x6a, 0x41, 0x09, 0x59, 0x17, 0xda, 0x67, 0x79, 0x26,
0x79, 0x26, 0x6f, 0x9e, 0x17, 0xdc, 0xab, 0xd2, 0xaf, 0x26, 0x85, 0x11, 0x13, 0x5e, 0x3c, 0x92,
0xc8, 0xa3, 0x81, 0x57, 0xa3, 0x8d, 0x4d, 0x0a, 0x77, 0xd7, 0x09, 0x5e, 0x9d, 0x7e, 0x2d, 0x21,
0x7b, 0x03, 0x2e, 0xca, 0xd2, 0x20, 0x59, 0x70, 0xc9, 0xde, 0x42, 0x13, 0xef, 0x7a, 0x13, 0xa7,
0xdc, 0x6b, 0x12, 0xbd, 0xc1, 0xec, 0x1d, 0xbc, 0xc1, 0x35, 0x2f, 0xae, 0x93, 0x50, 0xce, 0xf2,
0x22, 0x1d, 0x0d, 0xbc, 0x16, 0x5d, 0x68, 0x87, 0x67, 0xdf, 0xc0, 0xbe, 0xe2, 0x2e, 0xe3, 0xe8,
0xe1, 0x32, 0x4c, 0xb9, 0x07, 0x74, 0xf4, 0x16, 0xcb, 0xbe, 0x86, 0x3d, 0xc5, 0x9c, 0x87, 0x11,
0xff, 0x1c, 0x7c, 0xf2, 0xda, 0x14, 0x66, 0x93, 0xa4, 0x42, 0x12, 0xf3, 0x4c, 0xaa, 0x1a, 0x3b,
0xaa, 0x46, 0x83, 0xf2, 0xff, 0x70, 0x61, 0x1f, 0x3b, 0x0d, 0xf3, 0xc6, 0x62, 0x8e, 0x5d, 0x75,
0x0a, 0x8d, 0xab, 0x85, 0x8c, 0xf3, 0x4c, 0x50, 0x57, 0xb5, 0x4f, 0x7a, 0x96, 0x83, 0x76, 0x74,
0x5f, 0x87, 0x0e, 0x33, 0x59, 0x3c, 0x07, 0x65, 0xe2, 0x2b, 0x65, 0x38, 0xff, 0xad, 0x0c, 0xf7,
0xb5, 0x32, 0xbe, 0x02, 0x30, 0xa4, 0x53, 0x5e, 0x1a, 0x8c, 0xb2, 0x52, 0x88, 0x38, 0xcf, 0xc8,
0xec, 0x9a, 0x32, 0xdb, 0xa0, 0xcc, 0x46, 0xa9, 0xff, 0x63, 0xa3, 0x34, 0x76, 0x1b, 0xe5, 0xa5,
0xf9, 0x9a, 0x56, 0xf3, 0x7d, 0x09, 0xad, 0xf3, 0xbc, 0x88, 0x38, 0xf5, 0x7a, 0xab, 0xeb, 0xf6,
0x5a, 0xc1, 0x0b, 0x61, 0x36, 0x0f, 0xd8, 0xcd, 0xb3, 0x65, 0x4a, 0x7b, 0xc7, 0x94, 0xb7, 0x1f,
0xa1, 0x63, 0xca, 0x8a, 0xed, 0xf6, 0xc0, 0x9f, 0xf5, 0x4c, 0xe0, 0x92, 0x1d, 0x42, 0xed, 0x31,
0x4c, 0x56, 0x4a, 0xd6, 0x5a, 0xa0, 0xc0, 0x47, 0xe7, 0x43, 0xc5, 0x5f, 0xc2, 0x81, 0xe5, 0x90,
0x58, 0x6c, 0x77, 0x7a, 0x65, 0xb7, 0xd3, 0xb7, 0xae, 0xe4, 0xec, 0x5c, 0x09, 0xfb, 0x5b, 0x94,
0xfd, 0xed, 0xaa, 0xfe, 0x2e, 0xb1, 0xff, 0x8b, 0x4b, 0xea, 0x0e, 0x42, 0x19, 0xa2, 0x58, 0xc2,
0x9a, 0x60, 0xb1, 0x99, 0xe0, 0xc2, 0x9a, 0x60, 0x85, 0xf0, 0x64, 0x61, 0x58, 0xa7, 0xa6, 0xd8,
0xa4, 0x50, 0xc8, 0x54, 0x5b, 0xa7, 0x9c, 0x2f, 0x21, 0xe6, 0x46, 0x86, 0x75, 0xda, 0xf6, 0xc8,
0x9e, 0x71, 0x61, 0x54, 0xae, 0xa6, 0xd8, 0xa4, 0x70, 0x77, 0x9d, 0x40, 0xd6, 0xb7, 0x82, 0x12,
0x5a, 0x15, 0x37, 0xed, 0x8a, 0xd1, 0x10, 0xc1, 0x97, 0x34, 0xc4, 0x6e, 0x80, 0x4b, 0x9c, 0x71,
0xb1, 0x3d, 0xe3, 0xa0, 0x66, 0x5c, 0xbc, 0x32, 0xe3, 0xc2, 0x1e, 0x0e, 0xd5, 0x03, 0x5b, 0x2c,
0x0e, 0x87, 0xb0, 0x86, 0x43, 0xcd, 0xaf, 0x4d, 0x92, 0x0a, 0x86, 0x77, 0x7b, 0xaa, 0x46, 0x83,
0xf2, 0xc7, 0x70, 0x70, 0x35, 0x9b, 0x25, 0x71, 0xc6, 0xaf, 0x57, 0xe2, 0x7e, 0x94, 0xcd, 0x72,
0xec, 0x9f, 0x9b, 0x58, 0x26, 0x5c, 0xbb, 0xa4, 0x00, 0x63, 0x50, 0x1d, 0x70, 0x11, 0x69, 0x8b,
0x68, 0x8d, 0xa5, 0x0e, 0xd7, 0x52, 0xcf, 0x25, 0x2e, 0xfd, 0x9f, 0x1d, 0xfd, 0x87, 0x86, 0x3b,
0xdd, 0xc4, 0x0b, 0xd4, 0x50, 0xe1, 0xd2, 0xf4, 0x12, 0xe2, 0x88, 0xd0, 0xd2, 0xf8, 0x02, 0xbc,
0x10, 0xcc, 0x87, 0xce, 0x65, 0x2e, 0xe3, 0x59, 0x1c, 0x85, 0xd8, 0xec, 0xfa, 0x0c, 0x8b, 0xc3,
0x98, 0x51, 0x26, 0x8b, 0x7c, 0xba, 0x8a, 0x28, 0xa6, 0xaa, 0x62, 0x4c, 0x0e, 0xcf, 0x27, 0x31,
0x8a, 0x44, 0x7f, 0xc5, 0x4b, 0x88, 0xff, 0x4c, 0xc3, 0xb5, 0xb6, 0xdd, 0x19, 0xae, 0x31, 0xf2,
0xea, 0x29, 0xe3, 0xc5, 0x68, 0x50, 0xba, 0xad, 0x21, 0x7e, 0x62, 0xce, 0x0a, 0x1e, 0x4a, 0xbe,
0xf1, 0xbb, 0x1a, 0x18, 0x0c, 0xaa, 0x3c, 0xe6, 0xe9, 0x1d, 0x2f, 0xce, 0xf2, 0x55, 0x26, 0xc9,
0xf9, 0xbd, 0xc0, 0xa4, 0xfc, 0xdf, 0x2a, 0xd0, 0xc6, 0xc9, 0x2b, 0x55, 0x39, 0x82, 0x3a, 0xc1,
0xcd, 0x24, 0x28, 0x84, 0x22, 0x1b, 0x72, 0xd0, 0x1a, 0xb9, 0x51, 0xb4, 0x51, 0x80, 0xd6, 0x98,
0x7f, 0x41, 0x46, 0xeb, 0xb6, 0xd7, 0x88, 0xde, 0x29, 0xf9, 0x5d, 0x9c, 0x70, 0x5d, 0xac, 0x46,
0x68, 0xe9, 0x69, 0x5c, 0xc8, 0x7b, 0x5d, 0xae, 0x02, 0xc8, 0x0e, 0xd3, 0x30, 0x4e, 0x74, 0xbd,
0x0a, 0x68, 0x5d, 0x9a, 0xa5, 0x2e, 0xfe, 0xaf, 0x15, 0xd8, 0x57, 0xc5, 0x92, 0x3b, 0x78, 0xfd,
0x63, 0xa8, 0xcd, 0x71, 0x4d, 0xb7, 0xdf, 0x79, 0xae, 0x18, 0xf6, 0x07, 0x2a, 0x8e, 0x9d, 0x40,
0x23, 0xc2, 0x2d, 0xf2, 0x82, 0x4a, 0x6b, 0x9f, 0x78, 0x3b, 0x7f, 0x1b, 0x65, 0x46, 0x19, 0xc8,
0x3e, 0x00, 0xa4, 0x24, 0x21, 0x7d, 0x43, 0xd5, 0xc3, 0xea, 0xef, 0xd3, 0x8c, 0xd8, 0xd3, 0xa3,
0x9f, 0x0e, 0xfb, 0xc7, 0xea, 0x11, 0xf8, 0xad, 0x11, 0x7f, 0x57, 0xa7, 0xe7, 0xe0, 0xfb, 0xbf,
0x02, 0x00, 0x00, 0xff, 0xff, 0xc2, 0x41, 0x03, 0xcb, 0x21, 0x0a, 0x00, 0x00,
func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_0e67cfdf7b3776b1) }
var fileDescriptor_ws_0e67cfdf7b3776b1 = []byte{
// 1078 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0x5d, 0x4f, 0xe3, 0x46,
0x14, 0x95, 0xed, 0x04, 0xc8, 0x0d, 0xb0, 0xab, 0x29, 0xa2, 0xee, 0xaa, 0xaa, 0x22, 0xb7, 0xaa,
0xa2, 0x7d, 0x00, 0x89, 0x7d, 0xa9, 0xb6, 0xaa, 0xaa, 0x42, 0x02, 0xf2, 0x6a, 0x03, 0x68, 0x60,
0x5f, 0xfa, 0x82, 0x8c, 0x33, 0x80, 0x85, 0x3f, 0x12, 0x8f, 0x03, 0xe1, 0x7f, 0xf4, 0xb5, 0xff,
0xa1, 0xaf, 0xed, 0x4f, 0xe8, 0x43, 0xff, 0x51, 0xa5, 0xea, 0xde, 0x19, 0x9b, 0x99, 0x18, 0xb5,
0x7d, 0x9b, 0x73, 0x72, 0xc7, 0x33, 0xf7, 0x9c, 0x73, 0x1d, 0xc3, 0x2b, 0x39, 0xbd, 0xbf, 0x7a,
0x94, 0xfb, 0x8f, 0x72, 0x6f, 0x56, 0x16, 0x55, 0xc1, 0xfa, 0xc5, 0x4c, 0xe4, 0x57, 0x49, 0x76,
0x25, 0xa7, 0xf7, 0xc1, 0x9f, 0x0e, 0xf8, 0xe7, 0x8b, 0x34, 0x9d, 0x08, 0x29, 0xa3, 0x5b, 0x71,
0xf8, 0x74, 0x21, 0xe6, 0x1f, 0x13, 0x59, 0x71, 0x21, 0x67, 0x6c, 0x17, 0xd6, 0x26, 0xd1, 0xf2,
0x42, 0xcc, 0x7d, 0x67, 0xe0, 0x0c, 0x3d, 0xae, 0x11, 0xf1, 0x49, 0x8e, 0xbc, 0xab, 0x79, 0x42,
0xec, 0x47, 0xd8, 0xba, 0x48, 0xf2, 0xdb, 0x54, 0x7c, 0x92, 0xa2, 0x9c, 0xc8, 0x5b, 0xdf, 0x1b,
0x78, 0xc3, 0xfe, 0xc1, 0x17, 0x7b, 0xc6, 0x89, 0x7b, 0x27, 0x51, 0x75, 0x27, 0xca, 0xe3, 0xa2,
0xcc, 0xa2, 0x8a, 0xdb, 0xf5, 0xec, 0x07, 0xd8, 0x3c, 0x29, 0x8b, 0xc5, 0xac, 0xde, 0xdf, 0xf9,
0xaf, 0xfd, 0x56, 0x79, 0xf0, 0x0e, 0x3e, 0x7f, 0xb9, 0x97, 0x39, 0xf3, 0x61, 0x5d, 0x2a, 0xe4,
0x3b, 0x03, 0x6f, 0xe8, 0xf1, 0x1a, 0x06, 0x3b, 0xc0, 0x4e, 0x44, 0x35, 0x89, 0x96, 0x3f, 0xe5,
0x53, 0xd5, 0x07, 0x17, 0xf3, 0x60, 0x0c, 0x9f, 0xb5, 0x58, 0xa5, 0x48, 0x66, 0x29, 0x92, 0x35,
0x8a, 0x64, 0x96, 0x22, 0x0a, 0x05, 0x1f, 0x60, 0xd3, 0xbc, 0x2f, 0xdb, 0x06, 0x37, 0x1c, 0xd1,
0xde, 0x1e, 0x77, 0xc3, 0x11, 0x7b, 0x0b, 0x1d, 0xba, 0x93, 0x4b, 0x8d, 0xee, 0x5a, 0x8d, 0x4e,
0xe4, 0xad, 0xee, 0x92, 0x6a, 0x82, 0xbf, 0x5d, 0xe8, 0x35, 0x1c, 0x9e, 0x78, 0x21, 0xf2, 0x69,
0xf3, 0x34, 0x8d, 0x90, 0xe7, 0x22, 0x7e, 0x08, 0x47, 0x74, 0x93, 0x1e, 0xd7, 0x08, 0x05, 0xc0,
0xcd, 0x65, 0x91, 0xf9, 0xde, 0xc0, 0x19, 0x76, 0x79, 0x0d, 0xd9, 0x00, 0xfa, 0x47, 0x45, 0x5e,
0x89, 0xbc, 0xba, 0x7c, 0x9a, 0x09, 0xbf, 0x43, 0xbf, 0x9a, 0x14, 0x56, 0x5c, 0x88, 0xf2, 0x81,
0x44, 0x0e, 0x47, 0x7e, 0x97, 0x1e, 0x6c, 0x52, 0xf8, 0x74, 0xbd, 0xc1, 0x5f, 0xa3, 0x5f, 0x6b,
0xc8, 0x5e, 0x83, 0x87, 0xb2, 0xac, 0x93, 0x2c, 0xb8, 0x64, 0x6f, 0x60, 0x03, 0xef, 0x7a, 0x99,
0x64, 0xc2, 0xdf, 0x20, 0xba, 0xc1, 0xec, 0x2d, 0xbc, 0xc6, 0xb5, 0x28, 0xcf, 0xd3, 0xa8, 0xba,
0x29, 0xca, 0x2c, 0x1c, 0xf9, 0x3d, 0xba, 0x50, 0x8b, 0x67, 0xdf, 0xc2, 0xb6, 0xe2, 0x4e, 0x93,
0xf8, 0xfe, 0x34, 0xca, 0x84, 0x0f, 0x74, 0xf4, 0x0a, 0xcb, 0xbe, 0x81, 0x2d, 0xc5, 0x1c, 0x47,
0xb1, 0xf8, 0xc4, 0x3f, 0xfa, 0x7d, 0x2a, 0xb3, 0x49, 0x52, 0x21, 0x4d, 0x44, 0x5e, 0xa9, 0x1e,
0x37, 0x55, 0x8f, 0x06, 0x15, 0xfc, 0xe5, 0xc1, 0x36, 0x26, 0x0d, 0xf7, 0x4d, 0xe4, 0x2d, 0xa6,
0xea, 0x10, 0xd6, 0xcf, 0x66, 0x55, 0x52, 0xe4, 0x92, 0x52, 0xd5, 0x3f, 0x18, 0x5a, 0x0e, 0xda,
0xd5, 0x7b, 0xba, 0x74, 0x9c, 0x57, 0xe5, 0x13, 0xaf, 0x37, 0xbe, 0xd0, 0x86, 0xfb, 0xff, 0xda,
0xf0, 0x5e, 0x6a, 0xe3, 0x2b, 0x00, 0x43, 0x3a, 0xe5, 0xa5, 0xc1, 0x28, 0x2b, 0xa5, 0x4c, 0x8a,
0x9c, 0xcc, 0xee, 0x2a, 0xb3, 0x0d, 0xca, 0x0c, 0xca, 0xda, 0xbf, 0x06, 0x65, 0xbd, 0x1d, 0x94,
0xe7, 0xf0, 0x6d, 0x58, 0xe1, 0xfb, 0x12, 0x7a, 0xc7, 0x45, 0x19, 0x0b, 0xca, 0x7a, 0x6f, 0xe0,
0x0d, 0x7b, 0xfc, 0x99, 0x30, 0xc3, 0x03, 0x76, 0x78, 0x56, 0x4c, 0xe9, 0xb7, 0x4c, 0x79, 0xf3,
0x1e, 0x36, 0x4d, 0x59, 0x31, 0x6e, 0xf7, 0xe2, 0x49, 0xcf, 0x04, 0x2e, 0xd9, 0x0e, 0x74, 0x1f,
0xa2, 0x74, 0xa1, 0x64, 0xed, 0x72, 0x05, 0xde, 0xbb, 0xdf, 0x39, 0xc1, 0x1c, 0x5e, 0x59, 0x0e,
0xc9, 0xd9, 0x6a, 0xd2, 0x9d, 0x76, 0xd2, 0x57, 0xae, 0xe4, 0xb6, 0xae, 0x84, 0xf9, 0x96, 0x75,
0xbe, 0x3d, 0x95, 0xef, 0x1a, 0x07, 0xbf, 0x7a, 0xa4, 0xee, 0x28, 0xaa, 0x22, 0x14, 0x4b, 0x5a,
0x13, 0x2c, 0x9b, 0x09, 0x2e, 0xad, 0x09, 0x56, 0x08, 0x4f, 0x96, 0x86, 0x75, 0x6a, 0x8a, 0x4d,
0x0a, 0x85, 0xcc, 0xb4, 0x75, 0xca, 0xf9, 0x1a, 0xe2, 0xde, 0xd8, 0xb0, 0x4e, 0xdb, 0x1e, 0xdb,
0x33, 0x2e, 0x8d, 0xce, 0xd5, 0x14, 0x9b, 0x14, 0x3e, 0x5d, 0x6f, 0x20, 0xeb, 0x7b, 0xbc, 0x86,
0x56, 0xc7, 0x1b, 0x76, 0xc7, 0x68, 0x88, 0x14, 0x73, 0x1a, 0x62, 0x8f, 0xe3, 0x12, 0x67, 0x5c,
0xae, 0xce, 0x38, 0xa8, 0x19, 0x97, 0x2f, 0xcc, 0xb8, 0xb4, 0x87, 0x43, 0x65, 0x60, 0x85, 0xc5,
0xe1, 0x90, 0xd6, 0x70, 0xa8, 0xf9, 0xb5, 0x49, 0x52, 0xc1, 0xf0, 0x6e, 0x4b, 0xf5, 0x68, 0x50,
0xc1, 0x04, 0x5e, 0x9d, 0xdd, 0xdc, 0xa4, 0x49, 0x2e, 0xce, 0x17, 0xf2, 0x2e, 0xcc, 0x6f, 0x0a,
0xcc, 0xcf, 0x65, 0x52, 0xa5, 0x42, 0xbb, 0xa4, 0x00, 0x63, 0xd0, 0x19, 0x09, 0x19, 0x6b, 0x8b,
0x68, 0x8d, 0xad, 0x8e, 0x97, 0x95, 0x9e, 0x4b, 0x5c, 0x06, 0xbf, 0xb8, 0xfa, 0x0f, 0x0d, 0x9f,
0x74, 0x99, 0xcc, 0x50, 0x43, 0x85, 0x6b, 0xd3, 0x6b, 0x88, 0x23, 0x42, 0x4b, 0xe3, 0x0d, 0xf0,
0x4c, 0xb0, 0x00, 0x36, 0x4f, 0x8b, 0x2a, 0xb9, 0x49, 0xe2, 0x08, 0xc3, 0xae, 0xcf, 0xb0, 0x38,
0xac, 0x09, 0xf3, 0xaa, 0x2c, 0xa6, 0x8b, 0x98, 0x6a, 0x3a, 0xaa, 0xc6, 0xe4, 0xf0, 0x7c, 0x12,
0xa3, 0x4c, 0xf5, 0x5b, 0xbc, 0x86, 0xf8, 0xcf, 0x34, 0x5e, 0x6a, 0xdb, 0xdd, 0xf1, 0x12, 0x2b,
0xcf, 0x1e, 0x73, 0x51, 0x86, 0xa3, 0xda, 0x6d, 0x0d, 0xf1, 0x15, 0x73, 0x54, 0x8a, 0xa8, 0x12,
0x8d, 0xdf, 0x1d, 0x6e, 0x30, 0xa8, 0xf2, 0x44, 0x64, 0xd7, 0xa2, 0x3c, 0x2a, 0x16, 0x79, 0x45,
0xce, 0x6f, 0x71, 0x93, 0x0a, 0x7e, 0x73, 0x60, 0x97, 0x7a, 0x53, 0xe4, 0xf1, 0x22, 0x4d, 0x5b,
0x02, 0x4d, 0x6d, 0x81, 0xa6, 0x38, 0x16, 0x38, 0xad, 0xe1, 0xb4, 0x1e, 0x0b, 0x85, 0xd0, 0x09,
0x5e, 0xa4, 0xf5, 0x3c, 0xd0, 0x1a, 0x03, 0xf9, 0xa1, 0x48, 0x72, 0xba, 0x60, 0x87, 0x2e, 0xd8,
0x60, 0xfc, 0xad, 0x09, 0x93, 0xd2, 0xa0, 0xc1, 0xa6, 0x3c, 0x6b, 0x96, 0x3c, 0xc1, 0x1f, 0x0e,
0x6c, 0xab, 0x1e, 0xe9, 0x3e, 0x78, 0xd5, 0x7d, 0xe8, 0xd2, 0x9a, 0x2e, 0xda, 0xfa, 0x4a, 0x31,
0x5c, 0xe7, 0xaa, 0x8e, 0x1d, 0xc0, 0x3a, 0x3d, 0xa2, 0x28, 0xa9, 0x85, 0xfe, 0x81, 0xdf, 0xfa,
0xb7, 0xa8, 0x77, 0xd4, 0x85, 0xec, 0x08, 0x40, 0x89, 0x44, 0xaf, 0x4e, 0xf5, 0x3d, 0xf5, 0x75,
0xfb, 0xa4, 0x96, 0x90, 0xdc, 0xd8, 0x16, 0xfc, 0xee, 0x40, 0xdf, 0x78, 0x7a, 0x23, 0x65, 0xf3,
0xe6, 0x51, 0x08, 0xa5, 0x34, 0xe2, 0x47, 0x6b, 0xe4, 0xc2, 0xb8, 0x49, 0x1c, 0xad, 0x71, 0xff,
0x09, 0x0d, 0x96, 0x7e, 0xcd, 0x68, 0x44, 0xdf, 0x85, 0xc5, 0x75, 0x92, 0xd6, 0xc2, 0x6a, 0x84,
0x23, 0x74, 0x98, 0x94, 0xd5, 0x9d, 0x16, 0x55, 0x01, 0x64, 0xc7, 0x59, 0x94, 0xa4, 0x3a, 0x5f,
0x0a, 0xe8, 0x1c, 0x6e, 0xd4, 0x39, 0x3c, 0xdc, 0xfd, 0x79, 0x67, 0x6f, 0x5f, 0x7d, 0xc2, 0x7e,
0x6f, 0xb4, 0x7d, 0xbd, 0x46, 0x1f, 0xb3, 0xef, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0x6f, 0xce,
0xa8, 0xe0, 0xdf, 0x0a, 0x00, 0x00,
}

@ -107,10 +107,10 @@ message GroupInfoTip{
type GroupMemberFullInfoTip struct {
message GroupMemberFullInfoTip {
string GroupId = 1 ;
string UserId = 2 ;
int Role = 3;
int32 Role = 3;
uint64 JoinTime = 4;
string NickName = 5;
string FaceUrl =6;
@ -119,10 +119,20 @@ type GroupMemberFullInfoTip struct {
message CreateGroupTip{
GroupInfoTip group = 1;
UserInfoTip creator = 2;
repeated GroupMemberFullInfoTip memberList = 3;
GroupInfoTip Group = 1;
UserInfoTip Creator = 2;
repeated GroupMemberFullInfoTip MemberList = 3;
}
message UserInfoTip {
string UserID = 1;
string Name = 2;
string Icon = 3;
int32 Gender = 4;
string Mobile = 5;
string Birth = 6;
string Email = 7;
string Ex = 8;
}

Loading…
Cancel
Save