默认
发表评论 6
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 求教IM部署至Linux tomcat生产环境后,部分聊天功能出現問題
阅读(17064) | 评论(6 收藏 淘帖
神秘人  发表于 2 年前 倒序浏览 |阅读模式


問題闡述:

首先我在本地端配置整個 RainbowChat 服務沒問題,包含( Rainvbowchat_server、Rainbowchat_web、RainbowChatMQServer2、RainbowChat4i ),
也可以正常溝通,無論在線或離線( web to phone、phone to web、web to web、phone to phone )。

奇怪的是,當我將整個服務( Rainvbowchat_server、Rainbowchat_web、RainbowChatMQServer2 )
配置到 Linux CentOS 7.9.2009 環境( apache-tomcat-7.0.94,確認防火牆未開啟 ),則只有在「web to phone」在線單人聊天時會失敗,偶爾會正常收到訊息但是頻率不固定。
大概發10條會收到一條,其他會轉離線訊息,查看 Log 發現只要是「web to phone」在線通訊,代碼都會進到 "onTransferMessage_RealTimeSendFaild" 這支 Function,想請問大致可能會出現這種狀況的原因 ?

我已經知道"onTransferMessage_RealTimeSendFaild"是在 C2S 或 S2C 在出現推送實時失敗時會進回調,且正常情況下「web to phone」在線單人聊天會進到"onTransferMessage4C2C"
這支 Function。

詳細操作流程:

聊天流程大致如下( web to phone 在線通訊,C2C ):

1. web 前端發送訊息 ->
2. Node.js 接收訊息( SDK 裡確認該用戶是否在線 ) ->
3. 將訊息推送至 RabbitMQ ( q_web2app 隊列 ) ->
4. 此時 Rainvbowchat_server 去消費 RabbitMQ 訊息 ( 不確定這邊 Rainvbowchat_server 去 RabbitMQ 消費訊息的這個動作算不算是 C2S
,因為 C2C 通訊依 API 文檔來看就是 C2S + S2C )
5. 這邊如何將訊息傳遞到 IOS 設備不清楚( S2C 階段 )

目前懷疑是步驟4或者步驟5出了錯誤,不確定原因為何 ?

相關配置:

本機:

RabbitMQ 3.10.5
Erlang 24.0
java 1.8.0_251
apache-tomcat-7.0.94

Linux測試環境:

RabbitMQ 3.8.14
Erlang 23.3.2
java 1.8.0_251
apache-tomcat-7.0.94

已調整相關功能:

1. 將 http 改為 https 已依照文檔說明修改"rbchat_config.js"及"rbchat_main.js"。
2. 二次開發為"舊Rainvbowchat_server"基礎上將"Rainbowchat_web"加進來( 將 web 中 Get 功能都改為 Post 以兼容舊 IM 版本,後端開放同源政策限制 )


即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:移动端IM产品RainbowChat[专业版] iOS端 v6.0版已发布!下一篇:移动端IM产品RainbowChat[专业版] iOS端 v6.1版已发布!
推荐方案
评论 6
这繁体字看的真难受。你公司叫什么名字?
神秘人  发表于 2 年前
引用:JackJiang 发表于 2022-10-13 11:07
这繁体字看的真难受。你公司叫什么名字?

淳華科技有限公司
引用:qzuser 发表于 2022-10-13 11:14
淳華科技有限公司

看懂的意思,你的意思就是开发环境都没有问题,但部署到生产环境后出现这些状态,对吧?   PS:不能打简体字吗,这像看天书一样

另外,你按下面这个消息路径走向来诊断:

你诊断一下实时消息收发路径的正常情况:

  • 1)app给app发消息是否能实时收到?
  • 2)app给web发消息是否能实时收到?
  • 3)web给web发消息是否能实时收到?
  • 4)wep给app发消息是否能实时收到?

你只需要在问题后面回复Yes或NO
神秘人  发表于 2 年前
引用:JackJiang 发表于 2022-10-13 11:15
看懂的意思,你的意思就是开发环境都没有问题,但部署到生产环境后出现这些状态,对吧?   PS:不能打简 ...

1 => Yes
2 => Yes
3 => Yes
4 => No
引用:qzuser 发表于 2022-10-13 11:20
1 => Yes
2 => Yes
3 => Yes

ok,那就是wep to app这个方向出的问题。

下一步的精确诊断方法:

  • 第一步:关闭所有客户端;
  • 第二步:关闭所有服务端
  • 第三步:重新开启3个服务端(2个web产品要用到的服务端,1个app产品对应的服务端),请务必确保,3个服务端,各自都只存在一个实例在运行,切记!
  • 第四步:分别开启一个app端并登陆,一个web端并登陆;
  • 第五步:有条件的话,清一下3个服务端的log;
  • 第六步:Web端,发送一条消息给app的用户(记住,只要1条!);
  • 第七步:第6步结束后,什么也别做,分别把3个服务端,针对刚才发出的这一条消息的所有Log,复制出来,并做好文件名标记(对应是哪个服务端的)。

以上log取出来后(说的是各服务的log4j日志),看log就明白了,log里会有明确的消息走向日志,如果配置不对出现的异常也有详细的信息输出。

如果你看不明白,可以贴给我,我也帮你们分析分析。
傻瓜式诊断方法,严格按照我说的来。
引用:qzuser 发表于 2022-10-13 12:21
请问第三步的三个服务端(2个web产品要用到的服务端,1个app产品对应的服务端,代表的是 RainboeChatServe ...

是的,没错,它们都有完整的log4j日志输出,你可以指日志输出指定到你能找的到的路径,方便查看!
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部