/* 数据完整性判断 */
printf("WebSocketClientConstructor data %d\r\n",length);
+
if (isFinished) {
// 数据完整,创建消息结构体
ws_msg_info_t *msg = ws_msg_create(length);
}
}
- } 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);
+ }
}
}
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");
}
}
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)
{
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;
}
}
}
+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 回调函数
/* 二进制消息处理回调函数类型 */
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);
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; /* 连接事件回调函数 */
/* 回调函数注册接口 */
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);