默認
發表評論 5
想開發IM:買成品怕坑?租第3方怕貴?找開源自已擼?盡量別走彎路了... 找站長給點建議
[已回復] 求助MobileIMSDK做的IM自已修改代碼后,C2C 消息發送ACK問題
閱讀(908) | 評論(5 收藏 淘帖
  先說前提:代碼是修改過的。原版代碼沒有問題。新修改的有問題
問題描述:c2c發送好友消息時,A 發送消息給好友B。 B能收到消息。但是B不發送接受到消息的ACK反饋,導致A端一直在轉圈圈,A認為發送失敗,會再次進行消息的發送。
源碼代碼看過我貼兩張關鍵的圖片,一個是接受消息的地方,一個是發送消息的地方。
正確的代碼圖片,只是加入日志:
eclipse是正常的代碼
IDEA是收不到回調的代碼。
打印的日志如下:
正常的日志如下:
發送====>bridge:false,type:51,datacontent:{},from:0,to:300150,fp:null,QoS:false,typeu:-1,retryCount:0
接收到===>>>bridge:false,type:2,datacontent:{"cy":0,"f":"300148","m":"消息內容","t":"300150","ty":0},from:300148,to:300150,fp:50f2b829-96ce-40bd-b431-1ccfaa9d2b5f,QoS:true,typeu:3,retryCount:0
[INFO] - [19:53:16.633][IMCORE]>> 收到客戶端{uid:300148}/10.66.40.216:63798的通用數據發送請求. | (ServerCoreHandler.messageReceived:126)
[DEBUG] - [19:53:16.634]【@】當前在線用戶共(2)人-------------------> | (OnlineProcessor.__printOnline:66)
發送====>bridge:false,type:2,datacontent:{"cy":0,"f":"300148","m":"消息內容","t":"300150","ty":0},from:300148,to:300150,fp:50f2b829-96ce-40bd-b431-1ccfaa9d2b5f,QoS:true,typeu:3,retryCount:0
接收到===>>>bridge:false,type:4,datacontent:50f2b829-96ce-40bd-b431-1ccfaa9d2b5f,from:300150,to:300148,fp:null,QoS:false,typeu:-1,retryCount:0
[INFO] - [19:53:16.702][IMCORE]>> 收到客戶端{uid:300150}/10.66.40.216:63927的ACK應答包發送請求. | (ServerCoreHandler.messageReceived:113)
[DEBUG] - [19:53:16.702]【@】當前在線用戶共(2)人-------------------> | (OnlineProcessor.__printOnline:66)
發送====>bridge:false,type:4,datacontent:50f2b829-96ce-40bd-b431-1ccfaa9d2b5f,from:300150,to:300148,fp:null,QoS:false,typeu:-1,retryCount:0
[DEBUG] - [19:53:16.702][IMCORE-本機QoS!]【QoS機制_C2C】300150發給300148的指紋為50f2b829-96ce-40bd-b431-1ccfaa9d2b5f的應答包已成功轉發?true | (LogicProcessor.processACK:112)
接收到===>>>bridge:false,type:1,datacontent:{},from:300148,to:0,fp:null,QoS:false,typeu:-1,retryCount:0

錯誤的日志如下:
<<<====bridge:false,type:2,datacontent:{"cy":0,"f":"300148","m":"發送內容","t":"300150","ty":0},from:300148,to:300150,fp:dc3f6e76-bbde-4126-9b91-3e838eb4a2a9,QoS:true,typeu:3,retryCount:0
2019-11-06 20:02:55.129  INFO 12784 --- [pool-5-thread-6] n.o.m.server.ServerCoreHandler           : [IMCORE]>> 收到客戶端{uid:300148}/10.66.40.216:63935的通用數據發送請求.
2019-11-06 20:02:55.129 DEBUG 12784 --- [pool-5-thread-6] n.o.m.server.processor.OnlineProcessor   : 【@】當前在線用戶共(2)人------------------->
====>>>bridge:false,type:2,datacontent:{"cy":0,"f":"300148","m":"發送內容","t":"300150","ty":0},from:300148,to:300150,fp:dc3f6e76-bbde-4126-9b91-3e838eb4a2a9,QoS:true,typeu:3,retryCount:0
<<<====bridge:false,type:1,datacontent:{},from:300150,to:0,fp:null,QoS:false,typeu:-1,retryCount:0




即時通訊網 - 即時通訊開發者社區! 來源: - 即時通訊開發者社區!

標簽:MobileIMSDK

wrong1.png (90.95 KB, 下載次數: 14)

wrong1.png

wrong.png (96.1 KB, 下載次數: 14)

wrong.png

right2.png (80.86 KB, 下載次數: 15)

right2.png

QQ圖片20191106194212.png (67.12 KB, 下載次數: 15)

QQ圖片20191106194212.png
上一篇:瓜子IM智能客服系統的數據架構設計(整理自現場演講,有配套PPT)下一篇:IM里“附近的人”功能實現原理是什么?如何高效率地實現它?
推薦方案
評論 5

2 樓: mark7788 Lv.1 樓主 1 個月前
發送的消息內容一樣。消息協議除了指紋不一樣,其他的都一樣。怎么會出現一個能收到ack,一個不能收到ack呢?

3 樓: mark7788 Lv.1 樓主 1 個月前
方便看日志,我格式化了下

log.png (95.45 KB, 下載次數: 17)

log.png
你描述的有點亂,我有兩個問題:
1)你改動了什么代碼?改動和目的是什么?
2)這句話該怎么理解?“發送的消息內容一樣。消息協議除了指紋不一樣,其他的都一樣。怎么會出現一個能收到ack,一個不能收到ack呢?”:意思是說,你修改后的代碼,運行在兩個手機上,一個手機上的ACK正常,另一個不正常?
簽名: 《主流移動端賬號登錄方式的原理及設計思路》http://www.uktmgv.tw/thread-2863-1-1.html
引用:JackJiang 發表于 2019-11-06 21:56
你描述的有點亂,我有兩個問題:
1)你改動了什么代碼?改動和目的是什么?
2)這句話該怎么理解?“發送 ...

1,我沒有修改mina服務器端通訊SDK功能(MobileIMSDKServerXOpen),改動只是加上日志,如圖所示。
2,客戶端android代碼是同一套,是兩個手機。依托于mima的服務器端(rainbowchat)有兩個版本。一個是原版的。一個是我們依托于原版rainbowchat開發的。當服務器端啟動rainbowchat原版本的時候能正常收到ack。當關閉原版本,開啟自己開發的版本時收不到ack。
引用:mark7788 發表于 2019-11-07 10:37
1,我沒有修改mina服務器端通訊SDK功能(MobileIMSDKServerXOpen),改動只是加上日志,如圖所示。
2, ...

那就太奇怪了。你用的是github里下載的最新代碼嗎。
實在不行,你就把你編譯的jar,反編譯一下,跟rainbowchat的反編譯一下,用beyong compare這個工具,進行逐個類的全文比對,看看有什么差異。
簽名: 《主流移動端賬號登錄方式的原理及設計思路》http://www.uktmgv.tw/thread-2863-1-1.html
打賞樓主 ×
使用微信打賞! 使用支付寶打賞!

返回頂部
曾氏料二肖中特