From: hcj <1224667075@qq.com> Date: Fri, 26 Sep 2025 11:40:13 +0000 (+0800) Subject: 补交ws接口 X-Git-Tag: V1.0.9_20251128_194606_LN~250^2~43 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=5a4926985753568752f1f488eaa0aaeadbae2ce9;p=mirrors%2FFD230.git 补交ws接口 --- diff --git a/code/sdk/zhihui/websocket/os_ws/haisi_websocket.c b/code/sdk/zhihui/websocket/os_ws/haisi_websocket.c index 21fe09128..decd7adb8 100644 --- a/code/sdk/zhihui/websocket/os_ws/haisi_websocket.c +++ b/code/sdk/zhihui/websocket/os_ws/haisi_websocket.c @@ -129,6 +129,7 @@ static void uapi_ws_on_message(int client, const char *data, size_t length, bool /* 数据完整性判断 */ printf("WebSocketClientConstructor data %d\r\n",length); + if (isFinished) { // 数据完整,创建消息结构体 ws_msg_info_t *msg = ws_msg_create(length); @@ -169,8 +170,13 @@ static void uapi_ws_on_message(int client, const char *data, size_t length, bool } } - } else { + } + else { printf("[LN][WS] Incomplete or invalid message data\n"); + // 数据不完整时调用回调函数 + if (g_ws_callbacks.incomplete_callback != NULL) { + g_ws_callbacks.incomplete_callback(data, length, isBinary); + } } } @@ -320,6 +326,7 @@ static void uapi_ws_main_thread(void *arg) if(g_ws_close_status== WS_CLOSE_NOT_EXECUTED){ printf("[LN][WS] WebSocketClientClose WS_CLOSE_NOT_EXECUTED\n"); uapi_ws_close_with_status(g_ws_client_fd); + g_ws_close_status = WS_CLOSE_NOT_EXECUTED; g_ws_client_fd=-1; printf("[LN][WS] WebSocketClientClose WS_CLOSE_NOT_EXECUTED end\n"); } @@ -510,6 +517,7 @@ int uapi_ws_send_text(const char *text) } return WebSocketClientSendText(g_ws_client_fd, text, strlen(text)); } +uint32_t size_uapi_ws_send_BIN=0; int uapi_ws_send_BIN(uint8_t *data,int len) { @@ -538,7 +546,8 @@ int uapi_ws_send_BIN(uint8_t *data,int len) WebSocketClientSendBinEnd(g_ws_client_fd,data+len/3+len/3,len/3); } - printf("[LN][WS] uapi_ws_send_BIN,size: %d\n", len); + size_uapi_ws_send_BIN+=len; + printf("[LN][WS] uapi_ws_send_BIN,size: %d %d\n", len,size_uapi_ws_send_BIN); return 0; } @@ -680,6 +689,16 @@ void uapi_ws_register_binary_callback(ws_binary_message_callback_t callback) } } +void uapi_ws_register_incomplete_callback(ws_incomplete_message_callback_t callback) +{ + g_ws_callbacks.incomplete_callback = callback; + if (callback != NULL) { + printf("[LN][WS] Incomplete message callback registered successfully\n"); + } else { + printf("[LN][WS] Incomplete message callback unregistered\n"); + } +} + /** * @brief 注册URL处理回调函数(公共接口) * @param callback 回调函数 diff --git a/code/sdk/zhihui/websocket/os_ws/haisi_websocket.h b/code/sdk/zhihui/websocket/os_ws/haisi_websocket.h index 513955ae4..d2ac635a6 100644 --- a/code/sdk/zhihui/websocket/os_ws/haisi_websocket.h +++ b/code/sdk/zhihui/websocket/os_ws/haisi_websocket.h @@ -17,6 +17,9 @@ typedef void (*ws_message_callback_t)(const char *raw_data, uint32_t timestamp); /* 二进制消息处理回调函数类型 */ typedef void (*ws_binary_message_callback_t)(const uint8_t *raw_data, uint32_t timestamp, uint16_t data_len); +/* 数据不完整消息处理回调函数类型 */ +typedef void (*ws_incomplete_message_callback_t)(const char *raw_data, size_t length, bool isBinary); + /* URL构建回调函数类型 */ typedef void (*ws_url_callback_t)(char *url, size_t url_size, char *header_buf, size_t header_size); @@ -37,6 +40,7 @@ typedef void (*ws_event_callback_t)(ws_event_type_t event_type); typedef struct { ws_message_callback_t message_callback; /* 文本消息处理回调函数 */ ws_binary_message_callback_t binary_callback; /* 二进制消息处理回调函数 */ + ws_incomplete_message_callback_t incomplete_callback; /* 数据不完整消息处理回调函数 */ ws_url_callback_t url_callback; /* URL构建回调函数 */ ws_heartbeat_callback_t heartbeat_callback; /* 心跳处理回调函数 */ ws_event_callback_t event_callback; /* 连接事件回调函数 */ @@ -62,6 +66,7 @@ void uapi_ws_print_status_info(void); /* 回调函数注册接口 */ void uapi_ws_register_message_callback(ws_message_callback_t callback); void uapi_ws_register_binary_callback(ws_binary_message_callback_t callback); +void uapi_ws_register_incomplete_callback(ws_incomplete_message_callback_t callback); void uapi_ws_register_url_callback(ws_url_callback_t callback); void uapi_ws_register_heartbeat_callback(ws_heartbeat_callback_t callback); void uapi_ws_register_event_callback(ws_event_callback_t callback);