客户端wss连接状态一直在0,-1,0,2之间变化,导致用户无法登录

jaler 24天前 172

野火专业版

生产有两个客户在不同时间分别出现无法连接im-server服务的问题,导致登录失败。

  • kConnectionStatusLogout=-2: 退出登录
  • kConnectionStatusUnconnected=-1: 未连接
  • kConnectionStatusConnecting=0: 连接中
  • kConnectionStatusConnected=1: 已连接
  • kConnectionStatusReceiving=2: 正在与服务同步数据中

客户1: 2025-11-11 09:33:31: 状态是:0(连接中), 2025-11-11 09:33:31: 状态是:2(数据同步中), 2025-11-11 09:33:31: 状态是:1(已连接), 2025-11-11 09:34:08: 状态是:0(连接中), 2025-11-11 09:34:09: 状态是:2(数据同步中), 2025-11-11 09:34:09: 状态是:1(已连接)

客户1的连接状态一直这几个状态间来回变化,反馈说登录失败。

我们联系客服,让我们添加了客户端mars日志上传功能,后续可以通过mars日志分析问题。

mars日志上传功能上线后,又有一个客户在测试环境无法登录。 客户2: 2025-11-26 13:06:12 状态是:0(连接中), 2025-11-26 13:06:12: 状态是:-1(未连接), 2025-11-26 13:06:16: 状态是:0(连接中), 2025-11-26 13:06:16: 状态是:2(数据同步中), 2025-11-26 13:06:46: 状态是:0(连接中), 2025-11-26 13:06:46: 状态是:2(数据同步中), 2025-11-26 13:07:10: 状态是:0(连接中), 2025-11-26 13:07:10: 状态是:2(数据同步中),

我们开始尝试取从服务器上获取mars日志,但是没找到该客户的mars xlog日志。其他的用户的xlog日志有正常上传,就这个无法登录的用户的xlog日志没有。怀疑是这种没建立连接的用户不会打印xlog日志吗?请帮忙确认下。

问题:

  1. 对于客户出现这种问题,我们需要如何快速定位问题?能申请售后介入吗?我们准备大量迁移用户过来,这个问题得提前解决并处理
  2. xlog日志在客户无法登录的情况下没有打印和上传是正常现象吗?

备注:

  1. 我们把26号无法登录的客户2的对应的im-server日志上传了,希望可以协助分析下问题(客户2的用户_uid:1949730710847172608,_name:8499c1a039714ffc88d0f90eeca6edb6 , _display_name:刘冬)
  2. 另外26号可以正常登录的客户3的xlog日志我们也添加在附件里了。希望可以给寻找问题提供帮助(1950126581559644160_wflog_20251126.xlog)
  3. 顺带帮忙通过日志看下我们部署的是否有什么潜在的问题?
  4. 如果有其他需要沟通的请您联系您们的客服(微信号: wildfirechat)加入售后服务群
上传的附件:
最新回复 (7)
  • HeavyRain 24天前
    引用 2
    分析客户3的日志:看到有多次重连,每次重连的触发原因都是onNetworkChange,一般都是网络来回切换引起的,是不是客户的网络一直在实时的变化中,在2分钟的日志时长中,出现了19次网络变化。这个需要跟客户确认网络情况,另外我们也查一下网络变化的判断条件。

    分析客户2的日志,发现客户2有大量消息需要同步到客户端,而且消息都是比较大的,有几千条消息需要同步到客户端,每次同步消息体最大是512KB,一次只能同步下来几十条,平均下来每条消息的大小在5KB到10KB之间,要同步上百次才能全部同步下来,这有些不正常,需要减少消息体的大小,如果消息体太大,换成媒体类消息,如果是图片或者视频缩略图,压缩到5KB左右,一直在同步中导致可以出现超时导致重新连接继续同步发生。另外也可以减少漫游消息条数,在换新手机时减少首次登录时间
  • HeavyRain 24天前
    引用 3
    如果连接状态转到2,那么就是连上的,其实只要是connect,在没有调用disconnect和被踢之前,都是不断写日志的。需要检查一下是不是上传日志有问题
  • HeavyRain 24天前
    引用 4
    HeavyRain 如果连接状态转到2,那么就是连上的,其实只要是connect,在没有调用disconnect和被踢之前,都是不断写日志的。需要检查一下是不是上传日志有问题
    第一个客户没有上传日志的问题,是怎么触发用户上传的?如果是消息,有可能消息一直收不完,没有收到上传日志的消息
  • jaler 24天前
    引用 5
    第一个客户1那会我们还没上线mars日志采集的功能(所以没有日志是正常的)。
    第二个客户2没有上传日志。触发客户上传日志的事件是:如果客户一直无法登录成功,则客户端主动调用sdk接口触发mars日志上传。但是看连接状态已经有过2的状态,所以不知道为啥客户2的mars日志没有。

    另外,我们自定义了一个消息1005,里面确实有图片原图,我们需要怎么调整,才能让自定义的消息变成媒体消息?
  • HeavyRain 23天前
    引用 6
    第二个客户2没有上传日志。触发客户上传日志的事件是:如果客户一直无法登录成功,则客户端主动调用sdk接口触发mars日志上传。但是看连接状态已经有过2的状态,所以不知道为啥客户2的mars日志没有。

    xlog有个特点是有缓存,等日志写到一定量之后,才会写入文件,有可能是日志还不够写入。当然也有可能是上传没有发起或者是上传失败。你们可以做成这样,当需要上传又找不到日志文件时,发送上传文件不存在的请求,这样你们就能确定是没有日志还是没有上传(成功)日志

    另外,我们自定义了一个消息1005,里面确实有图片原图,我们需要怎么调整,才能让自定义的消息变成媒体消息?

    可以参考图片消息的定义,重点在图片消息的encode方法
  • jaler 18天前
    引用 7
    您好,今天生产一个客户12月1号更换手机设备,可能是消息比较多,从12月1日至今天一直在同步数据。具体状态如下:
    "recent_status\":\
    "2025-12-01 10:02:56: 2,
    2025-12-01 10:02:56: 1,
    2025-12-01 10:04:14: 0,
    2025-12-01 10:04:14: 2,
    2025-12-01 10:04:14: 1,
    2025-12-01 10:04:25: 0,
    2025-12-01 10:04:25: 2,
    2025-12-01 10:04:25: 1,
    2025-12-01 15:55:04: 0,
    2025-12-01 15:55:05: 2,
    2025-12-01 15:55:05: 1,
    2025-12-01 15:58:28: 0,
    2025-12-01 15:58:28: 2,
    2025-12-01 15:58:28: 1,
    2025-12-01 15:59:42: 0,
    2025-12-01 15:59:42: 2,
    2025-12-01 15:59:42: 1,
    2025-12-01 16:00:19: 0,
    2025-12-01 16:00:19: 2,
    2025-12-01 16:00:19: 1,
    2025-12-01 16:01:28: 0,
    2025-12-01 16:01:28: 2,
    2025-12-01 16:01:28: 1,
    2025-12-01 16:02:16: 0,
    2025-12-01 16:02:16: 2,
    2025-12-01 16:02:16: 1,
    2025-12-01 16:03:19: 0,
    2025-12-01 16:03:19: 2,
    2025-12-01 16:03:19: 1,
    2025-12-01 16:05:30: 0,
    2025-12-01 16:05:30: 2,
    2025-12-01 16:05:30: 1,
    2025-12-01 16:08:07: 0,
    2025-12-01 16:08:07: 2,
    2025-12-01 16:08:07: 1,
    2025-12-01 16:09:18: 0,
    2025-12-01 16:09:18: 2,
    2025-12-01 16:09:18: 1,
    2025-12-01 16:09:39: 0,
    2025-12-01 16:09:40: 2,
    2025-12-01 16:09:40: 1,
    2025-12-01 21:22:08: 0,
    2025-12-01 21:22:08: 2,
    2025-12-01 21:22:09: 1,
    2025-12-02 19:04:11: 0,
    2025-12-02 19:04:14: 2,
    2025-12-02 19:04:14: 1,
    2025-12-03 23:09:22: 0,
    2025-12-03 23:09:24: -1,
    2025-12-03 23:09:25: 0\"}

    怀疑是同步消息过多导致,对于同步消息,客户更换设备是怎么个同步机制,拉取所有数据吗?还是拉取最近多久的数据?上面您有提到过减少漫游消息条数,这个需要怎么配置?
  • jaler 18天前
    引用 8
    ##服务器为每个用户缓存的消息数量。这个值改得太大,拉取消息时间变长。
    message.max_queue 5000
    找到了,应该是这个值
返回