mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-26 11:36:44 +08:00
Merge remote-tracking branch 'origin/tuoyun' into tuoyun
This commit is contained in:
commit
0f760dc388
@ -588,5 +588,6 @@ demo:
|
|||||||
smtpAddr: "smtp.qq.com"
|
smtpAddr: "smtp.qq.com"
|
||||||
smtpPort: 25 #需开放此端口 出口方向
|
smtpPort: 25 #需开放此端口 出口方向
|
||||||
|
|
||||||
|
rtc:
|
||||||
|
port: 11300
|
||||||
|
address: 127.0.0.1
|
@ -35,10 +35,16 @@ func UserRegister(c *gin.Context) {
|
|||||||
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName)
|
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName)
|
||||||
client := rpc.NewAuthClient(etcdConn)
|
client := rpc.NewAuthClient(etcdConn)
|
||||||
reply, err := client.UserRegister(context.Background(), req)
|
reply, err := client.UserRegister(context.Background(), req)
|
||||||
if err != nil || reply.CommonResp.ErrCode != 0 {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "UserRegister failed ", err, reply.CommonResp.ErrCode)
|
log.NewError(req.OperationID, "call rpc err ", err)
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "internal service err"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if reply.CommonResp.ErrCode != 0 {
|
||||||
|
log.NewError(req.OperationID, "UserRegister failed ", err)
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": reply.CommonResp.ErrMsg})
|
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": reply.CommonResp.ErrMsg})
|
||||||
return
|
return
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pbDataToken := &rpc.UserTokenReq{Platform: params.Platform, FromUserID: params.UserID, OperationID: params.OperationID}
|
pbDataToken := &rpc.UserTokenReq{Platform: params.Platform, FromUserID: params.UserID, OperationID: params.OperationID}
|
||||||
|
@ -6,13 +6,17 @@ import (
|
|||||||
"Open_IM/pkg/common/log"
|
"Open_IM/pkg/common/log"
|
||||||
"Open_IM/pkg/grpc-etcdv3/getcdv3"
|
"Open_IM/pkg/grpc-etcdv3/getcdv3"
|
||||||
pbChat "Open_IM/pkg/proto/chat"
|
pbChat "Open_IM/pkg/proto/chat"
|
||||||
|
pbRtc "Open_IM/pkg/proto/rtc"
|
||||||
sdk_ws "Open_IM/pkg/proto/sdk_ws"
|
sdk_ws "Open_IM/pkg/proto/sdk_ws"
|
||||||
|
"Open_IM/pkg/utils"
|
||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"encoding/gob"
|
"encoding/gob"
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
|
"google.golang.org/grpc"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -200,36 +204,59 @@ func (ws *WServer) sendSignalMsgReq(conn *UserConn, m *Req) {
|
|||||||
nReply := new(pbChat.SendMsgResp)
|
nReply := new(pbChat.SendMsgResp)
|
||||||
isPass, errCode, errMsg, pData := ws.argsValidate(m, constant.WSSendSignalMsg)
|
isPass, errCode, errMsg, pData := ws.argsValidate(m, constant.WSSendSignalMsg)
|
||||||
if isPass {
|
if isPass {
|
||||||
isPass2, errCode2, errMsg2, signalResp, msgData := ws.signalMessageAssemble(pData.(*sdk_ws.SignalReq), m.OperationID)
|
signalResp := pbRtc.SignalResp{}
|
||||||
if isPass2 {
|
//isPass2, errCode2, errMsg2, signalResp, msgData := ws.signalMessageAssemble(pData.(*sdk_ws.SignalReq), m.OperationID)
|
||||||
|
connGrpc, err := grpc.Dial(config.Config.Rtc.Address+":"+strconv.Itoa(config.Config.Rtc.Port), grpc.WithInsecure())
|
||||||
|
if err != nil {
|
||||||
|
log.NewError(m.OperationID, utils.GetSelfFuncName(), "grpc.Dial failed", err.Error())
|
||||||
|
ws.sendSignalMsgResp(conn, 204, "create grpc failed"+err.Error(), m, nil)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
rtcClient := pbRtc.NewRtcServiceClient(connGrpc)
|
||||||
|
req := &pbRtc.SignalMessageAssembleReq{
|
||||||
|
SignalReq: pData.(*pbRtc.SignalReq),
|
||||||
|
OperationID: m.OperationID,
|
||||||
|
}
|
||||||
|
respPb, err := rtcClient.SignalMessageAssemble(context.Background(), req)
|
||||||
|
if err != nil {
|
||||||
|
log.NewError(m.OperationID, utils.GetSelfFuncName(), "SignalMessageAssemble", err.Error(), config.Config.Rtc.Address+":"+strconv.Itoa(config.Config.Rtc.Port))
|
||||||
|
ws.sendSignalMsgResp(conn, 204, "grpc SignalMessageAssemble failed: "+err.Error(), m, &signalResp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
signalResp.Payload = respPb.SignalResp.Payload
|
||||||
|
msgData := sdk_ws.MsgData{}
|
||||||
|
utils.CopyStructFields(&msgData, respPb.MsgData)
|
||||||
|
log.NewInfo(m.OperationID, utils.GetSelfFuncName(), respPb.String())
|
||||||
|
if respPb.IsPass {
|
||||||
pbData := pbChat.SendMsgReq{
|
pbData := pbChat.SendMsgReq{
|
||||||
Token: m.Token,
|
Token: m.Token,
|
||||||
OperationID: m.OperationID,
|
OperationID: m.OperationID,
|
||||||
MsgData: msgData,
|
MsgData: &msgData,
|
||||||
}
|
}
|
||||||
|
log.NewInfo(m.OperationID, utils.GetSelfFuncName(), "pbData: ", pbData)
|
||||||
log.NewInfo(m.OperationID, "Ws call success to sendSignalMsgReq middle", m.ReqIdentifier, m.SendID, m.MsgIncr, msgData)
|
log.NewInfo(m.OperationID, "Ws call success to sendSignalMsgReq middle", m.ReqIdentifier, m.SendID, m.MsgIncr, msgData)
|
||||||
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName)
|
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName)
|
||||||
client := pbChat.NewChatClient(etcdConn)
|
client := pbChat.NewChatClient(etcdConn)
|
||||||
reply, err := client.SendMsg(context.Background(), &pbData)
|
reply, err := client.SendMsg(context.Background(), &pbData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(pbData.OperationID, "rpc sendMsg err", err.Error())
|
log.NewError(pbData.OperationID, utils.GetSelfFuncName(), "rpc sendMsg err", err.Error())
|
||||||
nReply.ErrCode = 200
|
nReply.ErrCode = 200
|
||||||
nReply.ErrMsg = err.Error()
|
nReply.ErrMsg = err.Error()
|
||||||
ws.sendSignalMsgResp(conn, 200, err.Error(), m, signalResp)
|
ws.sendSignalMsgResp(conn, 200, err.Error(), m, &signalResp)
|
||||||
} else {
|
} else {
|
||||||
log.NewInfo(pbData.OperationID, "rpc call success to sendMsgReq", reply.String())
|
log.NewInfo(pbData.OperationID, "rpc call success to sendMsgReq", reply.String())
|
||||||
ws.sendSignalMsgResp(conn, 0, "", m, signalResp)
|
ws.sendSignalMsgResp(conn, 0, "", m, &signalResp)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.NewError(m.OperationID, isPass2, errCode2, errMsg2)
|
log.NewError(m.OperationID, utils.GetSelfFuncName(), respPb.IsPass, respPb.CommonResp.ErrCode, respPb.CommonResp.ErrMsg)
|
||||||
ws.sendSignalMsgResp(conn, errCode2, errMsg2, m, signalResp)
|
ws.sendSignalMsgResp(conn, respPb.CommonResp.ErrCode, respPb.CommonResp.ErrMsg, m, &signalResp)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ws.sendSignalMsgResp(conn, errCode, errMsg, m, nil)
|
ws.sendSignalMsgResp(conn, errCode, errMsg, m, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
func (ws *WServer) sendSignalMsgResp(conn *UserConn, errCode int32, errMsg string, m *Req, pb *sdk_ws.SignalResp) {
|
func (ws *WServer) sendSignalMsgResp(conn *UserConn, errCode int32, errMsg string, m *Req, pb *pbRtc.SignalResp) {
|
||||||
// := make(map[string]interface{})
|
// := make(map[string]interface{})
|
||||||
|
|
||||||
b, _ := proto.Marshal(pb)
|
b, _ := proto.Marshal(pb)
|
||||||
|
@ -1,14 +1,5 @@
|
|||||||
package open_im_media
|
package open_im_media
|
||||||
|
|
||||||
import (
|
|
||||||
pbRtc "Open_IM/pkg/proto/rtc"
|
|
||||||
open_im_sdk "Open_IM/pkg/proto/sdk_ws"
|
|
||||||
"context"
|
|
||||||
"errors"
|
|
||||||
"github.com/jinzhu/copier"
|
|
||||||
"google.golang.org/grpc"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// Address gRPC服务地址
|
// Address gRPC服务地址
|
||||||
Address = "127.0.0.1:11300"
|
Address = "127.0.0.1:11300"
|
||||||
@ -23,35 +14,35 @@ func NewMedia() *Media {
|
|||||||
return &Media{}
|
return &Media{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Media) GetJoinToken(room, identity string, operationID string, data *open_im_sdk.ParticipantMetaData) (string, string, error) {
|
//func (m *Media) GetJoinToken(room, identity string, operationID string, data *open_im_sdk.ParticipantMetaData) (string, string, error) {
|
||||||
var newData pbRtc.ParticipantMetaData
|
// var newData pbRtc.ParticipantMetaData
|
||||||
copier.Copy(&newData, data)
|
// copier.Copy(&newData, data)
|
||||||
conn, err := grpc.Dial(Address, grpc.WithInsecure())
|
// conn, err := grpc.Dial(Address, grpc.WithInsecure())
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
return "", "", err
|
// return "", "", err
|
||||||
}
|
// }
|
||||||
defer conn.Close()
|
// defer conn.Close()
|
||||||
c := pbRtc.NewRtcServiceClient(conn)
|
// c := pbRtc.NewRtcServiceClient(conn)
|
||||||
req := &pbRtc.GetJoinTokenReq{Room: room, OperationID: operationID, Identity: identity, MetaData: &newData}
|
// req := &pbRtc.GetJoinTokenReq{Room: room, OperationID: operationID, Identity: identity, MetaData: &newData}
|
||||||
resp, err := c.GetJoinToken(context.Background(), req)
|
// resp, err := c.GetJoinToken(context.Background(), req)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
return "", "", err
|
// return "", "", err
|
||||||
}
|
// }
|
||||||
if resp.CommonResp.ErrCode != 0 {
|
// if resp.CommonResp.ErrCode != 0 {
|
||||||
return "", "", errors.New(resp.CommonResp.ErrMsg)
|
// return "", "", errors.New(resp.CommonResp.ErrMsg)
|
||||||
}
|
// }
|
||||||
return resp.Jwt, resp.LiveURL, nil
|
// return resp.Jwt, resp.LiveURL, nil
|
||||||
//at := auth.NewAccessToken(m.ApiKey, m.ApiSecret)
|
// //at := auth.NewAccessToken(m.ApiKey, m.ApiSecret)
|
||||||
//grant := &auth.VideoGrant{
|
// //grant := &auth.VideoGrant{
|
||||||
// RoomJoin: true,
|
// // RoomJoin: true,
|
||||||
// Room: room,
|
// // Room: room,
|
||||||
//}
|
// //}
|
||||||
//at.AddGrant(grant).
|
// //at.AddGrant(grant).
|
||||||
// SetIdentity(identity).
|
// // SetIdentity(identity).
|
||||||
// SetValidFor(time.Hour)
|
// // SetValidFor(time.Hour)
|
||||||
//
|
// //
|
||||||
//return at.ToJWT()
|
// //return at.ToJWT()
|
||||||
}
|
//}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
//roomClient = lksdk.NewRoomServiceClient(MediaAddress, ApiKey, ApiSecret)
|
//roomClient = lksdk.NewRoomServiceClient(MediaAddress, ApiKey, ApiSecret)
|
||||||
|
@ -7,12 +7,10 @@
|
|||||||
package gate
|
package gate
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"Open_IM/internal/msg_gateway/gate/open_im_media"
|
|
||||||
"Open_IM/pkg/common/constant"
|
"Open_IM/pkg/common/constant"
|
||||||
"Open_IM/pkg/common/log"
|
"Open_IM/pkg/common/log"
|
||||||
|
pbRtc "Open_IM/pkg/proto/rtc"
|
||||||
open_im_sdk "Open_IM/pkg/proto/sdk_ws"
|
open_im_sdk "Open_IM/pkg/proto/sdk_ws"
|
||||||
"Open_IM/pkg/utils"
|
|
||||||
"errors"
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -74,7 +72,7 @@ func (ws *WServer) argsValidate(m *Req, r int32) (isPass bool, errCode int32, er
|
|||||||
}
|
}
|
||||||
return true, 0, "", data
|
return true, 0, "", data
|
||||||
case constant.WSSendSignalMsg:
|
case constant.WSSendSignalMsg:
|
||||||
data := open_im_sdk.SignalReq{}
|
data := pbRtc.SignalReq{}
|
||||||
if err := proto.Unmarshal(m.Data, &data); err != nil {
|
if err := proto.Unmarshal(m.Data, &data); err != nil {
|
||||||
log.ErrorByKv("Decode Data struct err", "", "err", err.Error(), "reqIdentifier", r)
|
log.ErrorByKv("Decode Data struct err", "", "err", err.Error(), "reqIdentifier", r)
|
||||||
return false, 203, err.Error(), nil
|
return false, 203, err.Error(), nil
|
||||||
@ -117,139 +115,139 @@ func (ws *WServer) argsValidate(m *Req, r int32) (isPass bool, errCode int32, er
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ws *WServer) signalMessageAssemble(s *open_im_sdk.SignalReq, operationID string) (isPass bool, errCode int32, errMsg string, r *open_im_sdk.SignalResp, msgData *open_im_sdk.MsgData) {
|
//func (ws *WServer) signalMessageAssemble(s *open_im_sdk.SignalReq, operationID string) (isPass bool, errCode int32, errMsg string, r *open_im_sdk.SignalResp, msgData *open_im_sdk.MsgData) {
|
||||||
var msg open_im_sdk.MsgData
|
// var msg open_im_sdk.MsgData
|
||||||
var resp open_im_sdk.SignalResp
|
// var resp open_im_sdk.SignalResp
|
||||||
media := open_im_media.NewMedia()
|
// media := open_im_media.NewMedia()
|
||||||
msg.MsgFrom = constant.UserMsgType
|
// msg.MsgFrom = constant.UserMsgType
|
||||||
msg.ContentType = constant.SignalingNotification
|
// msg.ContentType = constant.SignalingNotification
|
||||||
reqData, e := proto.Marshal(s)
|
// reqData, e := proto.Marshal(s)
|
||||||
if e != nil {
|
// if e != nil {
|
||||||
return false, 201, e.Error(), nil, nil
|
// return false, 201, e.Error(), nil, nil
|
||||||
}
|
// }
|
||||||
msg.Content = reqData
|
// msg.Content = reqData
|
||||||
msg.CreateTime = utils.GetCurrentTimestampByMill()
|
// msg.CreateTime = utils.GetCurrentTimestampByMill()
|
||||||
options := make(map[string]bool, 6)
|
// options := make(map[string]bool, 6)
|
||||||
utils.SetSwitchFromOptions(options, constant.IsHistory, false)
|
// utils.SetSwitchFromOptions(options, constant.IsHistory, false)
|
||||||
utils.SetSwitchFromOptions(options, constant.IsPersistent, false)
|
// utils.SetSwitchFromOptions(options, constant.IsPersistent, false)
|
||||||
utils.SetSwitchFromOptions(options, constant.IsSenderSync, true)
|
// utils.SetSwitchFromOptions(options, constant.IsSenderSync, true)
|
||||||
utils.SetSwitchFromOptions(options, constant.IsConversationUpdate, false)
|
// utils.SetSwitchFromOptions(options, constant.IsConversationUpdate, false)
|
||||||
utils.SetSwitchFromOptions(options, constant.IsSenderConversationUpdate, false)
|
// utils.SetSwitchFromOptions(options, constant.IsSenderConversationUpdate, false)
|
||||||
utils.SetSwitchFromOptions(options, constant.IsUnreadCount, false)
|
// utils.SetSwitchFromOptions(options, constant.IsUnreadCount, false)
|
||||||
utils.SetSwitchFromOptions(options, constant.IsOfflinePush, true)
|
// utils.SetSwitchFromOptions(options, constant.IsOfflinePush, true)
|
||||||
msg.Options = options
|
// msg.Options = options
|
||||||
switch payload := s.Payload.(type) {
|
// switch payload := s.Payload.(type) {
|
||||||
case *open_im_sdk.SignalReq_Invite:
|
// case *open_im_sdk.SignalReq_Invite:
|
||||||
token, liveURL, err2 := media.GetJoinToken(payload.Invite.Invitation.RoomID, payload.Invite.Invitation.InviterUserID, operationID, payload.Invite.Participant)
|
// token, liveURL, err2 := media.GetJoinToken(payload.Invite.Invitation.RoomID, payload.Invite.Invitation.InviterUserID, operationID, payload.Invite.Participant)
|
||||||
if err2 != nil {
|
// if err2 != nil {
|
||||||
return false, 202, err2.Error(), nil, nil
|
// return false, 202, err2.Error(), nil, nil
|
||||||
}
|
// }
|
||||||
invite := open_im_sdk.SignalResp_Invite{&open_im_sdk.SignalInviteReply{
|
// invite := open_im_sdk.SignalResp_Invite{&open_im_sdk.SignalInviteReply{
|
||||||
Token: token,
|
// Token: token,
|
||||||
RoomID: payload.Invite.Invitation.RoomID,
|
// RoomID: payload.Invite.Invitation.RoomID,
|
||||||
LiveURL: liveURL,
|
// LiveURL: liveURL,
|
||||||
}}
|
// }}
|
||||||
resp.Payload = &invite
|
// resp.Payload = &invite
|
||||||
msg.SenderPlatformID = payload.Invite.Invitation.PlatformID
|
// msg.SenderPlatformID = payload.Invite.Invitation.PlatformID
|
||||||
msg.SessionType = payload.Invite.Invitation.SessionType
|
// msg.SessionType = payload.Invite.Invitation.SessionType
|
||||||
msg.OfflinePushInfo = payload.Invite.OfflinePushInfo
|
// msg.OfflinePushInfo = payload.Invite.OfflinePushInfo
|
||||||
msg.SendID = payload.Invite.Invitation.InviterUserID
|
// msg.SendID = payload.Invite.Invitation.InviterUserID
|
||||||
if len(payload.Invite.Invitation.InviteeUserIDList) > 0 {
|
// if len(payload.Invite.Invitation.InviteeUserIDList) > 0 {
|
||||||
msg.RecvID = payload.Invite.Invitation.InviteeUserIDList[0]
|
// msg.RecvID = payload.Invite.Invitation.InviteeUserIDList[0]
|
||||||
} else {
|
// } else {
|
||||||
return false, 203, errors.New("InviteeUserIDList is null").Error(), nil, nil
|
// return false, 203, errors.New("InviteeUserIDList is null").Error(), nil, nil
|
||||||
}
|
// }
|
||||||
msg.ClientMsgID = utils.GetMsgID(payload.Invite.Invitation.InviterUserID)
|
// msg.ClientMsgID = utils.GetMsgID(payload.Invite.Invitation.InviterUserID)
|
||||||
return true, 0, "", &resp, &msg
|
// return true, 0, "", &resp, &msg
|
||||||
case *open_im_sdk.SignalReq_InviteInGroup:
|
// case *open_im_sdk.SignalReq_InviteInGroup:
|
||||||
token, liveURL, err2 := media.GetJoinToken(payload.InviteInGroup.Invitation.RoomID, payload.InviteInGroup.Invitation.InviterUserID, operationID, payload.InviteInGroup.Participant)
|
// token, liveURL, err2 := media.GetJoinToken(payload.InviteInGroup.Invitation.RoomID, payload.InviteInGroup.Invitation.InviterUserID, operationID, payload.InviteInGroup.Participant)
|
||||||
if err2 != nil {
|
// if err2 != nil {
|
||||||
return false, 204, err2.Error(), nil, nil
|
// return false, 204, err2.Error(), nil, nil
|
||||||
}
|
// }
|
||||||
inviteGroup := open_im_sdk.SignalResp_InviteInGroup{&open_im_sdk.SignalInviteInGroupReply{
|
// inviteGroup := open_im_sdk.SignalResp_InviteInGroup{&open_im_sdk.SignalInviteInGroupReply{
|
||||||
RoomID: payload.InviteInGroup.Invitation.RoomID,
|
// RoomID: payload.InviteInGroup.Invitation.RoomID,
|
||||||
Token: token,
|
// Token: token,
|
||||||
LiveURL: liveURL,
|
// LiveURL: liveURL,
|
||||||
}}
|
// }}
|
||||||
resp.Payload = &inviteGroup
|
// resp.Payload = &inviteGroup
|
||||||
msg.SenderPlatformID = payload.InviteInGroup.Invitation.PlatformID
|
// msg.SenderPlatformID = payload.InviteInGroup.Invitation.PlatformID
|
||||||
msg.SessionType = payload.InviteInGroup.Invitation.SessionType
|
// msg.SessionType = payload.InviteInGroup.Invitation.SessionType
|
||||||
msg.OfflinePushInfo = payload.InviteInGroup.OfflinePushInfo
|
// msg.OfflinePushInfo = payload.InviteInGroup.OfflinePushInfo
|
||||||
msg.SendID = payload.InviteInGroup.Invitation.InviterUserID
|
// msg.SendID = payload.InviteInGroup.Invitation.InviterUserID
|
||||||
if len(payload.InviteInGroup.Invitation.InviteeUserIDList) > 0 {
|
// if len(payload.InviteInGroup.Invitation.InviteeUserIDList) > 0 {
|
||||||
msg.GroupID = payload.InviteInGroup.Invitation.GroupID
|
// msg.GroupID = payload.InviteInGroup.Invitation.GroupID
|
||||||
} else {
|
// } else {
|
||||||
return false, 205, errors.New("InviteeUserIDList is null").Error(), nil, nil
|
// return false, 205, errors.New("InviteeUserIDList is null").Error(), nil, nil
|
||||||
}
|
// }
|
||||||
msg.ClientMsgID = utils.GetMsgID(payload.InviteInGroup.Invitation.InviterUserID)
|
// msg.ClientMsgID = utils.GetMsgID(payload.InviteInGroup.Invitation.InviterUserID)
|
||||||
|
//
|
||||||
return true, 0, "", &resp, &msg
|
// return true, 0, "", &resp, &msg
|
||||||
case *open_im_sdk.SignalReq_Cancel:
|
// case *open_im_sdk.SignalReq_Cancel:
|
||||||
cancel := open_im_sdk.SignalResp_Cancel{&open_im_sdk.SignalCancelReply{}}
|
// cancel := open_im_sdk.SignalResp_Cancel{&open_im_sdk.SignalCancelReply{}}
|
||||||
resp.Payload = &cancel
|
// resp.Payload = &cancel
|
||||||
msg.OfflinePushInfo = payload.Cancel.OfflinePushInfo
|
// msg.OfflinePushInfo = payload.Cancel.OfflinePushInfo
|
||||||
msg.SendID = payload.Cancel.Invitation.InviterUserID
|
// msg.SendID = payload.Cancel.Invitation.InviterUserID
|
||||||
msg.SenderPlatformID = payload.Cancel.Invitation.PlatformID
|
// msg.SenderPlatformID = payload.Cancel.Invitation.PlatformID
|
||||||
msg.SessionType = payload.Cancel.Invitation.SessionType
|
// msg.SessionType = payload.Cancel.Invitation.SessionType
|
||||||
if len(payload.Cancel.Invitation.InviteeUserIDList) > 0 {
|
// if len(payload.Cancel.Invitation.InviteeUserIDList) > 0 {
|
||||||
switch payload.Cancel.Invitation.SessionType {
|
// switch payload.Cancel.Invitation.SessionType {
|
||||||
case constant.SingleChatType:
|
// case constant.SingleChatType:
|
||||||
msg.RecvID = payload.Cancel.Invitation.InviteeUserIDList[0]
|
// msg.RecvID = payload.Cancel.Invitation.InviteeUserIDList[0]
|
||||||
case constant.GroupChatType:
|
// case constant.GroupChatType:
|
||||||
msg.GroupID = payload.Cancel.Invitation.GroupID
|
// msg.GroupID = payload.Cancel.Invitation.GroupID
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
return false, 206, errors.New("InviteeUserIDList is null").Error(), nil, nil
|
// return false, 206, errors.New("InviteeUserIDList is null").Error(), nil, nil
|
||||||
}
|
// }
|
||||||
msg.ClientMsgID = utils.GetMsgID(payload.Cancel.OpUserID)
|
// msg.ClientMsgID = utils.GetMsgID(payload.Cancel.OpUserID)
|
||||||
return true, 0, "", &resp, &msg
|
// return true, 0, "", &resp, &msg
|
||||||
case *open_im_sdk.SignalReq_Accept:
|
// case *open_im_sdk.SignalReq_Accept:
|
||||||
token, liveURL, err2 := media.GetJoinToken(payload.Accept.Invitation.RoomID, payload.Accept.OpUserID, operationID, payload.Accept.Participant)
|
// token, liveURL, err2 := media.GetJoinToken(payload.Accept.Invitation.RoomID, payload.Accept.OpUserID, operationID, payload.Accept.Participant)
|
||||||
if err2 != nil {
|
// if err2 != nil {
|
||||||
return false, 207, err2.Error(), nil, nil
|
// return false, 207, err2.Error(), nil, nil
|
||||||
}
|
// }
|
||||||
accept := open_im_sdk.SignalResp_Accept{&open_im_sdk.SignalAcceptReply{
|
// accept := open_im_sdk.SignalResp_Accept{&open_im_sdk.SignalAcceptReply{
|
||||||
Token: token,
|
// Token: token,
|
||||||
LiveURL: liveURL,
|
// LiveURL: liveURL,
|
||||||
RoomID: payload.Accept.Invitation.RoomID,
|
// RoomID: payload.Accept.Invitation.RoomID,
|
||||||
}}
|
// }}
|
||||||
resp.Payload = &accept
|
// resp.Payload = &accept
|
||||||
msg.OfflinePushInfo = payload.Accept.OfflinePushInfo
|
// msg.OfflinePushInfo = payload.Accept.OfflinePushInfo
|
||||||
msg.SendID = payload.Accept.OpUserID
|
// msg.SendID = payload.Accept.OpUserID
|
||||||
msg.SenderPlatformID = payload.Accept.Invitation.PlatformID
|
// msg.SenderPlatformID = payload.Accept.Invitation.PlatformID
|
||||||
msg.SessionType = payload.Accept.Invitation.SessionType
|
// msg.SessionType = payload.Accept.Invitation.SessionType
|
||||||
if len(payload.Accept.Invitation.InviteeUserIDList) > 0 {
|
// if len(payload.Accept.Invitation.InviteeUserIDList) > 0 {
|
||||||
switch payload.Accept.Invitation.SessionType {
|
// switch payload.Accept.Invitation.SessionType {
|
||||||
case constant.SingleChatType:
|
// case constant.SingleChatType:
|
||||||
msg.RecvID = payload.Accept.Invitation.InviterUserID
|
// msg.RecvID = payload.Accept.Invitation.InviterUserID
|
||||||
case constant.GroupChatType:
|
// case constant.GroupChatType:
|
||||||
msg.GroupID = payload.Accept.Invitation.GroupID
|
// msg.GroupID = payload.Accept.Invitation.GroupID
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
return false, 208, errors.New("InviteeUserIDList is null").Error(), nil, nil
|
// return false, 208, errors.New("InviteeUserIDList is null").Error(), nil, nil
|
||||||
}
|
// }
|
||||||
msg.ClientMsgID = utils.GetMsgID(payload.Accept.OpUserID)
|
// msg.ClientMsgID = utils.GetMsgID(payload.Accept.OpUserID)
|
||||||
return true, 0, "", &resp, &msg
|
// return true, 0, "", &resp, &msg
|
||||||
case *open_im_sdk.SignalReq_HungUp:
|
// case *open_im_sdk.SignalReq_HungUp:
|
||||||
case *open_im_sdk.SignalReq_Reject:
|
// case *open_im_sdk.SignalReq_Reject:
|
||||||
reject := open_im_sdk.SignalResp_Reject{&open_im_sdk.SignalRejectReply{}}
|
// reject := open_im_sdk.SignalResp_Reject{&open_im_sdk.SignalRejectReply{}}
|
||||||
resp.Payload = &reject
|
// resp.Payload = &reject
|
||||||
msg.OfflinePushInfo = payload.Reject.OfflinePushInfo
|
// msg.OfflinePushInfo = payload.Reject.OfflinePushInfo
|
||||||
msg.SendID = payload.Reject.OpUserID
|
// msg.SendID = payload.Reject.OpUserID
|
||||||
msg.SenderPlatformID = payload.Reject.Invitation.PlatformID
|
// msg.SenderPlatformID = payload.Reject.Invitation.PlatformID
|
||||||
msg.SessionType = payload.Reject.Invitation.SessionType
|
// msg.SessionType = payload.Reject.Invitation.SessionType
|
||||||
if len(payload.Reject.Invitation.InviteeUserIDList) > 0 {
|
// if len(payload.Reject.Invitation.InviteeUserIDList) > 0 {
|
||||||
switch payload.Reject.Invitation.SessionType {
|
// switch payload.Reject.Invitation.SessionType {
|
||||||
case constant.SingleChatType:
|
// case constant.SingleChatType:
|
||||||
msg.RecvID = payload.Reject.Invitation.InviterUserID
|
// msg.RecvID = payload.Reject.Invitation.InviterUserID
|
||||||
case constant.GroupChatType:
|
// case constant.GroupChatType:
|
||||||
msg.GroupID = payload.Reject.Invitation.GroupID
|
// msg.GroupID = payload.Reject.Invitation.GroupID
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
return false, 209, errors.New("InviteeUserIDList is null").Error(), nil, nil
|
// return false, 209, errors.New("InviteeUserIDList is null").Error(), nil, nil
|
||||||
}
|
// }
|
||||||
msg.ClientMsgID = utils.GetMsgID(payload.Reject.OpUserID)
|
// msg.ClientMsgID = utils.GetMsgID(payload.Reject.OpUserID)
|
||||||
return true, 0, "", &resp, &msg
|
// return true, 0, "", &resp, &msg
|
||||||
}
|
// }
|
||||||
return false, 210, errors.New("InviteeUserIDList is null").Error(), nil, nil
|
// return false, 210, errors.New("InviteeUserIDList is null").Error(), nil, nil
|
||||||
}
|
//}
|
||||||
|
12
internal/push/getui/push.go
Normal file
12
internal/push/getui/push.go
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package getui
|
||||||
|
|
||||||
|
type Getui struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Getui) Push(userIDList []string, alert, detailContent, platform string) (resp string, err error) {
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Getui) Auth(apiKey, secretKey string, timeStamp int64) (token string, err error) {
|
||||||
|
return "", nil
|
||||||
|
}
|
@ -13,6 +13,9 @@ import (
|
|||||||
type JPushResp struct {
|
type JPushResp struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type JPush struct {
|
||||||
|
}
|
||||||
|
|
||||||
func JGAccountListPush(accounts []string, alert, detailContent, platform string) ([]byte, error) {
|
func JGAccountListPush(accounts []string, alert, detailContent, platform string) ([]byte, error) {
|
||||||
|
|
||||||
var pf requestBody.Platform
|
var pf requestBody.Platform
|
||||||
|
6
internal/push/push_interface.go
Normal file
6
internal/push/push_interface.go
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
package push
|
||||||
|
|
||||||
|
type offlinePusher interface {
|
||||||
|
auth(apiKey, secretKey string, timeStamp int64) (token string, err error)
|
||||||
|
push(userIDList []string, alert, detailContent, platform string) (resp string, err error)
|
||||||
|
}
|
@ -377,6 +377,10 @@ type config struct {
|
|||||||
SmtpPort int `yaml:"smtpPort"`
|
SmtpPort int `yaml:"smtpPort"`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Rtc struct {
|
||||||
|
Port int `yaml:"port"`
|
||||||
|
Address string `yaml:"address"`
|
||||||
|
} `yaml:"rtc"`
|
||||||
}
|
}
|
||||||
type PConversation struct {
|
type PConversation struct {
|
||||||
ReliabilityLevel int `yaml:"reliabilityLevel"`
|
ReliabilityLevel int `yaml:"reliabilityLevel"`
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,34 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
option go_package = "./rtc;rtc";
|
option go_package = "./rtc;rtc";
|
||||||
package rtc;
|
package proto;
|
||||||
|
|
||||||
message CommonResp{
|
message CommonResp{
|
||||||
int32 errCode = 1;
|
int32 errCode = 1;
|
||||||
string errMsg = 2;
|
string errMsg = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message MsgData {
|
||||||
|
string sendID = 1;
|
||||||
|
string recvID = 2;
|
||||||
|
string groupID = 3;
|
||||||
|
string clientMsgID = 4;
|
||||||
|
string serverMsgID = 5;
|
||||||
|
int32 senderPlatformID = 6;
|
||||||
|
string senderNickname = 7;
|
||||||
|
string senderFaceURL = 8;
|
||||||
|
int32 sessionType = 9;
|
||||||
|
int32 msgFrom = 10;
|
||||||
|
int32 contentType = 11;
|
||||||
|
bytes content = 12;
|
||||||
|
uint32 seq = 14;
|
||||||
|
int64 sendTime = 15;
|
||||||
|
int64 createTime = 16;
|
||||||
|
int32 status = 17;
|
||||||
|
map<string, bool> options = 18;
|
||||||
|
OfflinePushInfo offlinePushInfo = 19;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
message GroupInfo{
|
message GroupInfo{
|
||||||
string groupID = 1;
|
string groupID = 1;
|
||||||
string groupName = 2;
|
string groupName = 2;
|
||||||
@ -62,8 +84,136 @@ message GetJoinTokenResp{
|
|||||||
string liveURL = 3;
|
string liveURL = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
service RtcService {
|
message OfflinePushInfo{
|
||||||
rpc GetJoinToken(GetJoinTokenReq) returns(GetJoinTokenResp);
|
string title = 1;
|
||||||
|
string desc = 2;
|
||||||
|
string ex = 3;
|
||||||
|
string iOSPushSound = 4;
|
||||||
|
bool iOSBadgeCount = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalReq {
|
||||||
|
oneof payload {
|
||||||
|
SignalInviteReq invite = 1;
|
||||||
|
SignalInviteInGroupReq inviteInGroup= 2;
|
||||||
|
SignalCancelReq cancel = 3;
|
||||||
|
SignalAcceptReq accept = 4;
|
||||||
|
SignalHungUpReq hungUp = 5;
|
||||||
|
SignalRejectReq reject = 6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalResp {
|
||||||
|
oneof payload {
|
||||||
|
SignalInviteReply invite = 1;
|
||||||
|
SignalInviteInGroupReply inviteInGroup= 2;
|
||||||
|
SignalCancelReply cancel = 3;
|
||||||
|
SignalAcceptReply accept = 4;
|
||||||
|
SignalHungUpReply hungUp = 5;
|
||||||
|
SignalRejectReply reject = 6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message InvitationInfo {
|
||||||
|
string inviterUserID = 1;
|
||||||
|
repeated string inviteeUserIDList = 2;
|
||||||
|
string customData = 3;
|
||||||
|
string groupID = 4;
|
||||||
|
string roomID = 5;
|
||||||
|
int32 timeout = 6;
|
||||||
|
string mediaType = 7;
|
||||||
|
int32 platformID = 8;
|
||||||
|
int32 sessionType = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message SignalInviteReq {
|
||||||
|
string opUserID = 1;
|
||||||
|
InvitationInfo invitation = 2;
|
||||||
|
OfflinePushInfo offlinePushInfo = 3;
|
||||||
|
ParticipantMetaData participant = 4;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalInviteReply {
|
||||||
|
string token = 1;
|
||||||
|
string roomID = 2;
|
||||||
|
string liveURL = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalInviteInGroupReq {
|
||||||
|
string opUserID = 1;
|
||||||
|
InvitationInfo invitation = 2;
|
||||||
|
OfflinePushInfo offlinePushInfo = 3;
|
||||||
|
ParticipantMetaData participant = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalInviteInGroupReply {
|
||||||
|
string token = 1;
|
||||||
|
string roomID = 2;
|
||||||
|
string liveURL = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalCancelReq {
|
||||||
|
string opUserID = 1;
|
||||||
|
InvitationInfo invitation = 2;
|
||||||
|
OfflinePushInfo offlinePushInfo = 3;
|
||||||
|
ParticipantMetaData participant = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalCancelReply {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalAcceptReq {
|
||||||
|
string opUserID = 1;
|
||||||
|
InvitationInfo invitation = 2;
|
||||||
|
OfflinePushInfo offlinePushInfo = 3;
|
||||||
|
ParticipantMetaData participant = 4;
|
||||||
|
int32 opUserPlatformID = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalAcceptReply {
|
||||||
|
string token = 1;
|
||||||
|
string roomID = 2;
|
||||||
|
string liveURL = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalHungUpReq {
|
||||||
|
string opUserID = 1;
|
||||||
|
InvitationInfo invitation = 2;
|
||||||
|
OfflinePushInfo offlinePushInfo = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalHungUpReply {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message SignalRejectReq {
|
||||||
|
string opUserID = 1;
|
||||||
|
InvitationInfo invitation = 2;
|
||||||
|
OfflinePushInfo offlinePushInfo = 3;
|
||||||
|
ParticipantMetaData participant = 4;
|
||||||
|
int32 opUserPlatformID = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalRejectReply {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalMessageAssembleReq {
|
||||||
|
SignalReq signalReq = 1;
|
||||||
|
string operationID = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SignalMessageAssembleResp {
|
||||||
|
CommonResp commonResp = 1;
|
||||||
|
bool isPass = 2;
|
||||||
|
SignalResp signalResp = 3;
|
||||||
|
MsgData msgData = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
service RtcService {
|
||||||
|
rpc SignalMessageAssemble(SignalMessageAssembleReq) returns(SignalMessageAssembleResp);
|
||||||
|
}
|
||||||
|
@ -506,7 +506,7 @@ message DelMsgListReq{
|
|||||||
}
|
}
|
||||||
|
|
||||||
message DelMsgListResp{
|
message DelMsgListResp{
|
||||||
int32 errCode = 1;
|
int32 errCode = 1;
|
||||||
string errMsg = 2;
|
string errMsg = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user