From a03c7da082c8288a30556607ee2540f20b5929f0 Mon Sep 17 00:00:00 2001 From: cheng Date: Sun, 21 Sep 2025 11:58:08 +0800 Subject: [PATCH] =?utf8?q?=E5=88=9B=E5=BB=BAWebSocket=E8=87=AA=E5=8A=A8?= =?utf8?q?=E5=90=AF=E5=8A=A8=E4=BB=BB=E5=8A=A1=EF=BC=9A=E6=AF=8F3=E7=A7=92?= =?utf8?q?=E6=A3=80=E6=B5=8B=E4=B8=80=E6=AC=A1=E7=BD=91=E7=BB=9C=E5=B9=B6?= =?utf8?q?=E5=90=AF=E5=8A=A8WS?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- code/sdk/zhihui/leiniao/imsl_ln/ln_api.c | 36 +++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) 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; } -- 2.17.1