From ee48a373fd0aa922c1d66fe20d49ac386119f84f Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 4 Nov 2021 17:50:01 +0800 Subject: [PATCH 1/2] fix weak net send message success sync --- Makefile | 2 +- open_im_sdk/conversation_msg.go | 2 +- open_im_sdk/data_model.go | 6 +++--- open_im_sdk/open_im_sdk_conversation_msg.go | 22 +++++++++++++++++++++ 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index ff9a7583b..2184d0a34 100644 --- a/Makefile +++ b/Makefile @@ -23,4 +23,4 @@ reset_remote_branch: ios: reset_remote_branch go get golang.org/x/mobile rm -rf build/ open_im_sdk/t_friend_sdk.go - GOARCH=arm64 gomobile bind -v -trimpath -ldflags "-s -w" -o build/OpenIMCore.framework -target=ios ./open_im_sdk/ \ No newline at end of file + GOARCH=arm64 gomobile bind -v -trimpath -ldflags "-s -w" -o build/OpenIMCore.xcframework -target=ios ./open_im_sdk/ \ No newline at end of file diff --git a/open_im_sdk/conversation_msg.go b/open_im_sdk/conversation_msg.go index f7105c1d9..06bff1ea7 100644 --- a/open_im_sdk/conversation_msg.go +++ b/open_im_sdk/conversation_msg.go @@ -91,7 +91,7 @@ func (u *UserRelated) doMsgNew(c2v cmd2Value) { } if v.SendID == u.LoginUid { //seq對齊消息 Messages sent by myself if u.judgeMessageIfExists(msg) { //if sent through this terminal - err := u.updateMessageSeq(msg) + err := u.updateMessageSeq(msg, MsgStatusSendSuccess) if err != nil { sdkLog("updateMessageSeq err", err.Error(), msg) } diff --git a/open_im_sdk/data_model.go b/open_im_sdk/data_model.go index 1f3038b3c..f16c9167f 100644 --- a/open_im_sdk/data_model.go +++ b/open_im_sdk/data_model.go @@ -1357,15 +1357,15 @@ func (u *UserRelated) insertPushMessageToChatLog(message *MsgStruct) (err error) return nil } -func (u *UserRelated) updateMessageSeq(message *MsgStruct) (err error) { +func (u *UserRelated) updateMessageSeq(message *MsgStruct, status int) (err error) { u.mRWMutex.Lock() defer u.mRWMutex.Unlock() - stmt, err := u.Prepare("update chat_log set seq=? where msg_id=?") + stmt, err := u.Prepare("update chat_log set seq=?,status=? where msg_id=?") if err != nil { sdkLog("Prepare failed, ", err.Error()) return err } - _, err = stmt.Exec(message.Seq, message.ClientMsgID) + _, err = stmt.Exec(message.Seq, status, message.ClientMsgID) if err != nil { sdkLog("Exec failed ", err.Error()) return err diff --git a/open_im_sdk/open_im_sdk_conversation_msg.go b/open_im_sdk/open_im_sdk_conversation_msg.go index ec9e0cf31..65478e577 100644 --- a/open_im_sdk/open_im_sdk_conversation_msg.go +++ b/open_im_sdk/open_im_sdk_conversation_msg.go @@ -1373,6 +1373,28 @@ func (u *UserRelated) InsertSingleMessageToLocalStorage(callback Base, message, return s.ClientMsgID } +func (u *UserRelated) InsertGroupMessageToLocalStorage(callback Base, message, groupID, sender string) string { + s := MsgStruct{} + err := json.Unmarshal([]byte(message), &s) + if err != nil { + callback.OnError(200, err.Error()) + return "" + } + s.SendID = sender + s.RecvID = groupID + //Generate client message primary key + s.ClientMsgID = getMsgID(s.SendID) + s.SendTime = getCurrentTimestampByNano() + go func() { + if err = u.insertMessageToLocalOrUpdateContent(&s); err != nil { + callback.OnError(201, err.Error()) + } else { + callback.OnSuccess("") + } + }() + return s.ClientMsgID +} + func (u *UserRelated) FindMessages(callback Base, messageIDList string) { go func() { var c []string From 83545f93ef58a96c8501a47cc89ea84d5989eaf0 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 4 Nov 2021 18:55:00 +0800 Subject: [PATCH 2/2] fix weak net send message success sync --- open_im_sdk/conversation_msg.go | 7 +++++-- open_im_sdk/ws_wrapper/open_im_sdk_server.go | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/open_im_sdk/conversation_msg.go b/open_im_sdk/conversation_msg.go index 06bff1ea7..de0a38f22 100644 --- a/open_im_sdk/conversation_msg.go +++ b/open_im_sdk/conversation_msg.go @@ -122,7 +122,7 @@ func (u *UserRelated) doMsgNew(c2v cmd2Value) { c.ConversationID = GetConversationIDBySessionType(c.GroupID, GroupChatType) } - if msg.ContentType <= AcceptFriendApplicationTip { + if msg.ContentType <= AcceptFriendApplicationTip && msg.ContentType != HasReadReceipt { newMessages = append(newMessages, msg) u.doUpdateConversation(cmd2Value{Value: updateConNode{c.ConversationID, AddConOrUpLatMsg, c}}) @@ -186,7 +186,10 @@ func (u *UserRelated) doMsgNew(c2v cmd2Value) { newMessages = append(newMessages, msg) } else { - _ = u.insertPushMessageToChatLog(msg) + err = u.insertPushMessageToChatLog(msg) + if err != nil { + sdkLog("insert HasReadReceipt err:", err) + } //update read state msgReadList = append(msgReadList, msg) } diff --git a/open_im_sdk/ws_wrapper/open_im_sdk_server.go b/open_im_sdk/ws_wrapper/open_im_sdk_server.go index 6de2b8912..9375be112 100644 --- a/open_im_sdk/ws_wrapper/open_im_sdk_server.go +++ b/open_im_sdk/ws_wrapper/open_im_sdk_server.go @@ -46,7 +46,6 @@ func main() { ws_local_server.InitServer(&open_im_sdk.IMConfig{IpApiAddr: *openIMApiAddress, IpWsAddr: *openIMWsAddress, Platform: utils.OSXPlatformID, DbDir: "./"}) case "linux": - //sdkDBDir:= flag.String("sdk_db_dir","","openIMSDK initialization path") ws_local_server.InitServer(&open_im_sdk.IMConfig{IpApiAddr: "http://" + utils.ServerIP + ":" + utils.IntToString(*openIMApiPort), IpWsAddr: "ws://" + utils.ServerIP + ":" + utils.IntToString(*openIMWsPort), Platform: utils.WebPlatformID, DbDir: "../db/sdk/"})