mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-06 04:15:46 +08:00
message update
This commit is contained in:
parent
bfc28cab8a
commit
b36c041d35
@ -32,7 +32,7 @@ func loggerInit(moduleName string) *Logger {
|
|||||||
logger.SetLevel(logrus.TraceLevel)
|
logger.SetLevel(logrus.TraceLevel)
|
||||||
//Log Style Setting
|
//Log Style Setting
|
||||||
logger.SetFormatter(&nested.Formatter{
|
logger.SetFormatter(&nested.Formatter{
|
||||||
TimestampFormat: "2006-01-02 15:04:05",
|
TimestampFormat: "2006-01-02 15:04:05.000",
|
||||||
HideKeys: false,
|
HideKeys: false,
|
||||||
FieldsOrder: []string{"PID"},
|
FieldsOrder: []string{"PID"},
|
||||||
})
|
})
|
||||||
@ -58,7 +58,7 @@ func NewLfsHook(rotationTime time.Duration, maxRemainNum uint, moduleName string
|
|||||||
logrus.WarnLevel: initRotateLogs(rotationTime, maxRemainNum, "warn", moduleName),
|
logrus.WarnLevel: initRotateLogs(rotationTime, maxRemainNum, "warn", moduleName),
|
||||||
logrus.ErrorLevel: initRotateLogs(rotationTime, maxRemainNum, "error", moduleName),
|
logrus.ErrorLevel: initRotateLogs(rotationTime, maxRemainNum, "error", moduleName),
|
||||||
}, &nested.Formatter{
|
}, &nested.Formatter{
|
||||||
TimestampFormat: "2006-01-02 15:04:05",
|
TimestampFormat: "2006-01-02 15:04:05.000",
|
||||||
HideKeys: false,
|
HideKeys: false,
|
||||||
FieldsOrder: []string{"PID"},
|
FieldsOrder: []string{"PID"},
|
||||||
})
|
})
|
||||||
|
@ -8,7 +8,7 @@ import (
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
rpcPort := flag.Int("rpc_port", 10500, "rpc listening port")
|
rpcPort := flag.Int("rpc_port", 10500, "rpc listening port")
|
||||||
wsPort := flag.Int("ws_port", 10800, "rpc listening port")
|
wsPort := flag.Int("ws_port", 10800, "ws listening port")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
|
@ -66,9 +66,6 @@ func (mc *HistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.ErrorByKv("data insert to mongo err", pbSaveData.OperationID, "data", pbSaveData.String(), "err", err.Error())
|
log.ErrorByKv("data insert to mongo err", pbSaveData.OperationID, "data", pbSaveData.String(), "err", err.Error())
|
||||||
}
|
}
|
||||||
pbSaveData.Options = pbData.Options
|
|
||||||
pbSaveData.OfflineInfo = pbData.OfflineInfo
|
|
||||||
sendMessageToPush(&pbSaveData)
|
|
||||||
} else if msgKey == pbSaveData.SendID {
|
} else if msgKey == pbSaveData.SendID {
|
||||||
err := saveUserChat(pbData.SendID, &pbSaveData)
|
err := saveUserChat(pbData.SendID, &pbSaveData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -82,11 +79,19 @@ func (mc *HistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if msgKey == pbSaveData.RecvID {
|
||||||
|
pbSaveData.Options = pbData.Options
|
||||||
|
pbSaveData.OfflineInfo = pbData.OfflineInfo
|
||||||
|
sendMessageToPush(&pbSaveData)
|
||||||
|
}
|
||||||
|
|
||||||
log.InfoByKv("msg_transfer handle topic success...", "", "")
|
log.InfoByKv("msg_transfer handle topic success...", "", "")
|
||||||
} else if pbData.SessionType == constant.GroupChatType {
|
} else if pbData.SessionType == constant.GroupChatType {
|
||||||
log.Info("", "", "msg_transfer chat type = GroupChatType")
|
log.Info("", "", "msg_transfer chat type = GroupChatType")
|
||||||
uidAndGroupID := strings.Split(pbData.RecvID, " ")
|
if isHistory {
|
||||||
saveUserChat(uidAndGroupID[0], &pbSaveData)
|
uidAndGroupID := strings.Split(pbData.RecvID, " ")
|
||||||
|
saveUserChat(uidAndGroupID[0], &pbSaveData)
|
||||||
|
}
|
||||||
pbSaveData.Options = pbData.Options
|
pbSaveData.Options = pbData.Options
|
||||||
pbSaveData.OfflineInfo = pbData.OfflineInfo
|
pbSaveData.OfflineInfo = pbData.OfflineInfo
|
||||||
sendMessageToPush(&pbSaveData)
|
sendMessageToPush(&pbSaveData)
|
||||||
@ -108,6 +113,7 @@ func (mc *HistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession,
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func sendMessageToPush(message *pbMsg.MsgSvrToPushSvrChatMsg) {
|
func sendMessageToPush(message *pbMsg.MsgSvrToPushSvrChatMsg) {
|
||||||
|
log.InfoByKv("msg_transfer send message to push", message.OperationID, "message", message.String())
|
||||||
msg := pbPush.PushMsgReq{}
|
msg := pbPush.PushMsgReq{}
|
||||||
msg.OperationID = message.OperationID
|
msg.OperationID = message.OperationID
|
||||||
msg.PlatformID = message.PlatformID
|
msg.PlatformID = message.PlatformID
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
package pbChat;
|
package pbChat;//The package name to which the proto file belongs
|
||||||
option go_package = "chat;pbChat";
|
option go_package = "chat;pbChat";//The generated go pb file is in the current directory, and the package name is pbChat
|
||||||
|
|
||||||
message WSToMsgSvrChatMsg{
|
message WSToMsgSvrChatMsg{
|
||||||
string SendID = 1;
|
string SendID = 1;
|
||||||
|
@ -41,6 +41,7 @@ type MsgCallBackResp struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (rpc *rpcChat) UserSendMsg(_ context.Context, pb *pbChat.UserSendMsgReq) (*pbChat.UserSendMsgResp, error) {
|
func (rpc *rpcChat) UserSendMsg(_ context.Context, pb *pbChat.UserSendMsgReq) (*pbChat.UserSendMsgResp, error) {
|
||||||
|
log.InfoByKv("sendMsg", pb.OperationID, "args", pb.String())
|
||||||
serverMsgID := GetMsgID(pb.SendID)
|
serverMsgID := GetMsgID(pb.SendID)
|
||||||
pbData := pbChat.WSToMsgSvrChatMsg{}
|
pbData := pbChat.WSToMsgSvrChatMsg{}
|
||||||
pbData.MsgFrom = pb.MsgFrom
|
pbData.MsgFrom = pb.MsgFrom
|
||||||
@ -59,7 +60,7 @@ func (rpc *rpcChat) UserSendMsg(_ context.Context, pb *pbChat.UserSendMsgReq) (*
|
|||||||
pbData.MsgID = serverMsgID
|
pbData.MsgID = serverMsgID
|
||||||
pbData.OperationID = pb.OperationID
|
pbData.OperationID = pb.OperationID
|
||||||
pbData.Token = pb.Token
|
pbData.Token = pb.Token
|
||||||
pbData.SendTime = utils.GetCurrentTimestampBySecond()
|
pbData.SendTime = utils.GetCurrentTimestampByNano()
|
||||||
replay := pbChat.UserSendMsgResp{}
|
replay := pbChat.UserSendMsgResp{}
|
||||||
m := MsgCallBackResp{}
|
m := MsgCallBackResp{}
|
||||||
if config.Config.MessageCallBack.CallbackSwitch {
|
if config.Config.MessageCallBack.CallbackSwitch {
|
||||||
@ -84,16 +85,22 @@ func (rpc *rpcChat) UserSendMsg(_ context.Context, pb *pbChat.UserSendMsgReq) (*
|
|||||||
return returnMsg(&replay, pb, m.ResponseErrCode, m.ErrMsg, "", 0)
|
return returnMsg(&replay, pb, m.ResponseErrCode, m.ErrMsg, "", 0)
|
||||||
} else {
|
} else {
|
||||||
pbData.Content = m.ResponseResult.ModifiedMsg
|
pbData.Content = m.ResponseResult.ModifiedMsg
|
||||||
rpc.sendMsgToKafka(&pbData, pbData.RecvID)
|
err1 := rpc.sendMsgToKafka(&pbData, pbData.RecvID)
|
||||||
rpc.sendMsgToKafka(&pbData, pbData.SendID)
|
err2 := rpc.sendMsgToKafka(&pbData, pbData.SendID)
|
||||||
|
if err1 != nil || err2 != nil {
|
||||||
|
return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
|
||||||
|
}
|
||||||
return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime)
|
return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch pbData.SessionType {
|
switch pbData.SessionType {
|
||||||
case constant.SingleChatType:
|
case constant.SingleChatType:
|
||||||
rpc.sendMsgToKafka(&pbData, pbData.RecvID)
|
err1 := rpc.sendMsgToKafka(&pbData, pbData.RecvID)
|
||||||
rpc.sendMsgToKafka(&pbData, pbData.SendID)
|
err2 := rpc.sendMsgToKafka(&pbData, pbData.SendID)
|
||||||
|
if err1 != nil || err2 != nil {
|
||||||
|
return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
|
||||||
|
}
|
||||||
return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime)
|
return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime)
|
||||||
case constant.GroupChatType:
|
case constant.GroupChatType:
|
||||||
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
|
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
|
||||||
@ -138,11 +145,17 @@ func (rpc *rpcChat) UserSendMsg(_ context.Context, pb *pbChat.UserSendMsgReq) (*
|
|||||||
groupID := pbData.RecvID
|
groupID := pbData.RecvID
|
||||||
for i, v := range reply.MemberList {
|
for i, v := range reply.MemberList {
|
||||||
pbData.RecvID = v.UserId + " " + groupID
|
pbData.RecvID = v.UserId + " " + groupID
|
||||||
rpc.sendMsgToKafka(&pbData, utils.IntToString(i))
|
err := rpc.sendMsgToKafka(&pbData, utils.IntToString(i))
|
||||||
|
if err != nil {
|
||||||
|
return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for i, v := range addUidList {
|
for i, v := range addUidList {
|
||||||
pbData.RecvID = v + " " + groupID
|
pbData.RecvID = v + " " + groupID
|
||||||
rpc.sendMsgToKafka(&pbData, utils.IntToString(i+1))
|
err := rpc.sendMsgToKafka(&pbData, utils.IntToString(i+1))
|
||||||
|
if err != nil {
|
||||||
|
return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime)
|
return returnMsg(&replay, pb, 0, "", serverMsgID, pbData.SendTime)
|
||||||
default:
|
default:
|
||||||
@ -153,12 +166,12 @@ func (rpc *rpcChat) UserSendMsg(_ context.Context, pb *pbChat.UserSendMsgReq) (*
|
|||||||
return returnMsg(&replay, pb, 203, "unkonwn sessionType", "", 0)
|
return returnMsg(&replay, pb, 203, "unkonwn sessionType", "", 0)
|
||||||
|
|
||||||
}
|
}
|
||||||
func (rpc *rpcChat) sendMsgToKafka(m *pbChat.WSToMsgSvrChatMsg, key string) {
|
func (rpc *rpcChat) sendMsgToKafka(m *pbChat.WSToMsgSvrChatMsg, key string) error {
|
||||||
pid, offset, err := rpc.producer.SendMessage(m, key)
|
pid, offset, err := rpc.producer.SendMessage(m, key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ErrorByKv("kafka send failed", m.OperationID, "send data", m.String(), "pid", pid, "offset", offset, "err", err.Error(), "key", key)
|
log.ErrorByKv("kafka send failed", m.OperationID, "send data", m.String(), "pid", pid, "offset", offset, "err", err.Error(), "key", key)
|
||||||
}
|
}
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
func GetMsgID(sendID string) string {
|
func GetMsgID(sendID string) string {
|
||||||
t := time.Now().Format("2006-01-02 15:04:05")
|
t := time.Now().Format("2006-01-02 15:04:05")
|
||||||
|
@ -26,6 +26,11 @@ func UnixSecondToTime(second int64) time.Time {
|
|||||||
return time.Unix(second, 0)
|
return time.Unix(second, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Convert nano timestamp to time.Time type
|
||||||
|
func UnixNanoSecondToTime(nanoSecond int64) time.Time {
|
||||||
|
return time.Unix(0, nanoSecond)
|
||||||
|
}
|
||||||
|
|
||||||
//Get the current timestamp by Nano
|
//Get the current timestamp by Nano
|
||||||
func GetCurrentTimestampByNano() int64 {
|
func GetCurrentTimestampByNano() int64 {
|
||||||
return time.Now().UnixNano()
|
return time.Now().UnixNano()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user