| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include "RyanMqttTest.h"
- static RyanMqttError_e keepAliveTest(void)
- {
- RyanMqttClient_t *client;
- RyanMqttError_e result = RyanMqttSuccessError;
- RyanMqttTestInit(&client, RyanMqttTrue, RyanMqttTrue, 10, NULL, NULL);
- while (RyanMqttConnectState != RyanMqttGetState(client))
- {
- delay(100);
- }
- uint32_t keepAliveRemain = 0;
- uint32_t minKeepAliveRemain = 0;
- for (uint32_t i = 0; i < 60; i++)
- {
- if (RyanMqttConnectState != RyanMqttGetState(client))
- {
- result = RyanMqttFailedError;
- break;
- }
- RyanMqttGetKeepAliveRemain(client, &keepAliveRemain);
- if (keepAliveRemain < minKeepAliveRemain)
- {
- minKeepAliveRemain = keepAliveRemain;
- }
- RyanMqttLog_w("心跳倒计时: %d", keepAliveRemain);
- RyanMqttCheckCodeNoReturn(0 != keepAliveRemain, RyanMqttFailedError, RyanMqttLog_e, { break; });
- // 超时判断:如果剩余心跳时间小于 4 秒,视为超时/异常
- if (keepAliveRemain < 4000)
- {
- RyanMqttLog_e("心跳剩余时间过短: %d 秒,心跳包发送周期不对", keepAliveRemain);
- result = RyanMqttFailedError;
- break;
- }
- delay(500);
- }
- RyanMqttTestDestroyClient(client);
- if (minKeepAliveRemain > 7 * 1000)
- {
- RyanMqttLog_e("心跳剩余时间过短: %d 秒,可能频繁的发送心跳包", minKeepAliveRemain);
- result = RyanMqttFailedError;
- }
- return result;
- }
- RyanMqttError_e RyanMqttKeepAliveTest(void)
- {
- RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == keepAliveTest(), RyanMqttFailedError, RyanMqttLog_e,
- { goto __exit; });
- return RyanMqttSuccessError;
- __exit:
- return RyanMqttFailedError;
- }
|