From: cheng Date: Sun, 21 Sep 2025 03:58:08 +0000 (+0800) Subject: 创建WebSocket自动启动任务:每3秒检测一次网络并启动WS X-Git-Tag: leiniao_debug_1.0.0_20250922_020716~16^2~1 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=a03c7da082c8288a30556607ee2540f20b5929f0;p=mirrors%2FFD230.git 创建WebSocket自动启动任务:每3秒检测一次网络并启动WS --- diff --git a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c index fd87d81a3..9e9053972 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/ln_api.c @@ -1394,6 +1394,32 @@ void do_ln_http_server_recv_data(int cmd, char *data, uint32_t len) 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) { @@ -1433,7 +1459,15 @@ 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; }