暂无个人介绍
在keepalive时间内设备端没有发送任何消息就认为设备离线, 离线时间判断和keepalive时间有关系。而keepalive时间,是您自己在mqtt connect的时候指定设置的。
IoT套件会定时检测设备是否保活超时,超时才会将设备状态置为离线,这个时间和设备端设置的保活时长有关系,保活时长最少60秒,判断离线的时长要比这个保活时长长。
如果您使用的是控制台配置HTTP回调方式,一有消息到达我们会马上调用您服务器,您可以配置一个LVS的IP地址来负载均衡,由LVS的机器去分发多台应用服务器。 这个直接callback的方式我们目前不建议使用,建议您升级为使用规则引擎把消息转发到MNS消息队列,队列会根据您服务器的能力实现高并发大数据下消峰去谷,并且消息有存储保证不丢失,即使您的服务器挂了,重连后可收到离线数据。
为了安全性考虑,后续会支持同一个region下的内网IP地址。
如果不是设备主动断开,可以通过日志服务根据deviceName搜索,如果出现类似:[xxx][keepalive] [FAILURE] after 65 secs 这样的日志,那么说明设备的心跳包没有及时发送给服务器,服务器容忍5s的延迟,如果还是没有ping包过来,服务器会把客户端关闭。
如果是设备异常断开,服务器通常要心跳周期后才能感知设备离线。控制台显示的状态是无法实时的。部分情况目前可能会导致设备状态不一致情况: 比如 1)部分服务器做断网演练或重启,而设备重连机制有故障,那么设备会一直看到在线状态。 2)设备开启时马上又闪断了,可能状态会出现不一致; 一般情况设备再次上线会自动修复。
一般是调试过程中,如果看到设备反复上下线,很有可能同一个设备ID多处登录了;比如开了2个进程,但使用了同一个设备(deviceName),新的连接会把老的踢掉,而老的又会重连,进行互踢。对于这种情况,可以通过日志服务根据deviceName查询日志情况。注意,连接次数过多服务器可能会对设备降级。
可以
返回值和所代表的意思分别是:
MBEDTLS_X509_BADCERT_FUTURE /*< The certificate validity starts in the future. /
MBEDTLS_X509_BADCERT_BAD_MD /*< The certificate is signed with an unacceptable hash. /
MBEDTLS_X509_BADCERT_BAD_PK/*< The certificate is signed with an unacceptable PK alg (eg RSA vs ECDSA). /
MBEDTLS_X509_BADCERT_BAD_KEY /*< The certificate is signed with an unacceptable key (eg bad curve, RSA too short). /
这些都是用于传输层和应用层之间的加密的功能,比如你说的X509是权威机构CA颁发的认证,你那边客户端可以联网上CA确认你连的是不是真正的阿里的服务器。有兴趣可以参考http://freeloda.blog.51cto.com/2033581/1216176
如果发送的第一个数据包就出错了,考虑移植的TLS有问题
1.HAL是需要自行移植,请review一下TLS移植对接的部分是不正确
2.可以参见一个厂家的处理方式(仅供参考没验证过) https://github.com/aliyun/iotkit-embedded/issues/2