if (recv_data.data) free(recv_data.data);
}
}
+/* WebSocket自动启动任务(网络就绪后启动WebSocket)*/
+static app_task_definition_t ln_ws_autostart_taskcfg = {0};
+static void ln_ws_autostart_task(void const *arg)
+{
+ printf("[LN][WS] autostart task running\n");
+ while (1)
+ {
+ /* 每3秒检查一次网络 */
+ if (uapi_dev_runtime_get_cat1_networkstat())
+ {
+ printf("[LN][WS] network online, try start websocket\n");
+ int ret = ln_ws_start(ln_ws_process_message);
+ if (ret == 0)
+ {
+ printf("[LN][WS] websocket started\n");
+ break; /* 启动成功后退出任务 */
+ }
+ else
+ {
+ printf("[LN][WS] start websocket failed: %d, retry later\n", ret);
+ }
+ }
+ usleep(3000 * 1000); // 休眠3秒
+ }
+ printf("[LN][WS] autostart task exit\n");
+}
// 雷鸟http服务初始化
errcode_t uapi_ln_http_server_init(void)
{
printf("[LN_AUDIO] init failed in http server init\n");
/* 不中断HTTP服务,按需可返回失败 */
}
- ln_ws_start(ln_ws_process_message);
+
+ /* 创建WebSocket自动启动任务:每3秒检测一次网络并启动WS */
+ ln_ws_autostart_taskcfg.create_queue_handle = NULL;
+ ln_ws_autostart_taskcfg.attr.name = "ln_ws_autostart_task";
+ ln_ws_autostart_taskcfg.attr.priority = osPriorityNormal;
+ ln_ws_autostart_taskcfg.attr.stack_size = 0x500;
+ ln_ws_autostart_taskcfg.func = ln_ws_autostart_task;
+ ln_ws_autostart_taskcfg.use_mem = USE_EXTEND_MEM;
+ (void)uapi_create_osThread_custom(&ln_ws_autostart_taskcfg);
return ERRCODE_SUCC;
}