0.0.1. Q. 我部署完成服务后,客户端能登录,但一只显示连接中或者无法连接。
A. 请按照如下步骤检查:
- 如果IM服务使用了域名,要对域名做解析。如果是专业版节点也是域名,也需要做解析。
- 确保只有一个IM服务实例在运行。社区版是单机单实例版本,如果启动多个实例会有异常,请确保只有一个实例启动。查询实例个数方法请百度,或者直接重启机器。 如果是专业版,每台服务器上也只能运行一个IM服务实例,且集群内每个IM服务实例的节点号不能重复。
- 检查端口是否绑定失败。查看logs/wildfirechat.log 看里面是不是有异常抛出,看一下异常原因。异常原因里有bind失败就是端口被占用。需要找到使用该端口的应用并停止掉,然后重启IM服务。或者换一台服务器。
- 检查服务器配置中的server.ip是否配置正确。server.ip应该是服务器的对外提供服务的IP地址。如果是专业版IM-Server,需要使用正确的节点域名。
- 检查安全组和防火墙是否将
1883
,80
开放。如果有Web/小程序客户端,检查8083/8084端口是否开放。如果是专业版,需要确保每个节点都要开放这几个端口。可以使用telnet IP地址 端口
命令来检查是否端口开放。如果您修改过端口,请注意检查对应的端口。 - 检查端口是否对外开放。在服务器上使用
curl http://localhost/api/version
或使用浏览器打开http://localhost/api/version
看看是否返回一个json。然后再在另外一台电脑上用浏览器打开http://{server.ip}/api/version
。 看看是否返回同样的json。 - 检查客户端配置是否正确。IM HOST要正确使用IM服务地址,可以是IP,建议用域名,注意不能带http头和端口。如果是专业版,客户端IM服务host只能配置为授权域名或 IP,不能使用节点IP地址或节点域名。
- 检查客户端连接状态值,如果总是
kConnectionStatusSecretKeyMismatch
,说明请求token使用的clientId不是从协议栈获取的,或者部署多个环境,请求token的环境和客户端实际使用的环境不一致。 - 检查logs/wildfirechat.log日志,看看是否有数据库的异常日志,如果有数据库的异常日志IM服务也将不可用。
- 如果客户端的连接状态是
kConnectionStatusRejected
,需要查看用户的状态,是不是被禁止登录。 - 如果一直是好用的,突然某个客户端一直连接中,可能是被禁用,也可能是多端登录而客户端又没有处理好对应的错误码,请检查错误码,查看是不是通用问题的问题8.
- 如果是专业版,确认是否放好license文件,是否过期等。
- 如果是社区版,请不要使用Nginx。专业版可以按照文档中的说明来配置NG。
- 专业版会附带一个专门的部署说明,文件名是
README.md
,一般是随着专业版发布的,专业版的部署一定要仔细看这个文档。 - 如果是社区版且修改过80端口。请在配置文件中把
http_port
和local_port
都修改为定制的端口。专业版请按照部署文档部署就行。 - 如果IM服务能够连上,能够正常使用,但经常出现重连。检查一下客户端与IM服务之间有没有网关网闸负载均衡之类的中间件,如果有需要开启链路保持10分钟或更多。
如果上述步骤全部排查完毕还不能解决问题,请把如下信息:
- 客户端协议栈日志和IM服务日志(IM服务默认为异步写,需要按照这里问题45修改为同步写)。
- IM服务配置文件(可以把配置文件中敏感信息替换成星号)
- 部署信息,比如有没有用NG,服务器部署是单机还是集群,服务器的域名和IP都是多少等信息。
- 客户端配置信息,客户端配置的IM Host是什么。
- 上面排查步骤每个步骤的排查情况。
发送邮件到 support@wildfirechat.cn,我们会抽空分析,如果是付费客户,请注明公司信息。因为公司人力有限、任务繁重,请在邮件中一次性提供所有要求的信息,避免无效沟通浪费时间。