-
Couldn't load subscription status.
- Fork 49
Open
Description
Checklist
- Checked the issue tracker for similar issues to ensure this is not a duplicate
- Read the documentation to confirm the issue is not addressed there and your configuration is set correctly
- Tested with the latest version to ensure the issue hasn't been fixed
How often does this bug occurs?
always
Expected behavior
尊敬的Mr.Tempotian
我遇到了设备与后端的WebRTC连接问题,请求得到您的帮助!
Actual behavior (suspected bug)
我采用的是MQTT信令,跟后端处于同一个局域网、公网、网段。
但日志却:在发送完sdpOffer并接收来自后端的answer并处理后,进行ICE协商交换握手,明明日志显示的已经完全按照流程在运行,但始终都无法连接,百思不得其解,只能向您请教!!
具体日志如下:(每次从状态”3“直接跳到状态”7“失败)
Error logs or terminal output
I (11667) WEBRTC_PEER: ========================================
I (11677) WEBRTC_PEER: 初始化WebRTC Peer
I (11677) WEBRTC_PEER: ========================================
I (11697) MQTT_SIGNALING: 遗嘱消息: {"deviceId":"98A316CB1A14","type":"sfu","method":"probate","result":"probate"}
I (11717) MQTT_SIGNALING: MQTT客户端启动成功,正在连接服务器...
E (16717) MQTT_SIGNALING: 等待MQTT连接超时,1秒后重试...
I (19797) MQTT_SIGNALING: MQTT连接成功
I (19807) MQTT_SIGNALING: 已发送订阅请求, 主题: /public/striped-kind-tiger/result/98A316CB1A14, msg_id=35222
I (21817) MQTT_SIGNALING: 遗嘱消息: {"deviceId":"98A316CB1A14","type":"sfu","method":"probate","result":"probate"}
I (21817) MQTT_SIGNALING: MQTT客户端启动成功,正在连接服务器...
I (22697) MQTT_SIGNALING: MQTT连接成功
I (22697) MQTT_SIGNALING: 已发送订阅请求, 主题: /public/striped-kind-tiger/result/98A316CB1A14, msg_id=9602
I (22787) MQTT_SIGNALING: 订阅成功,连接建立完成!msg_id=9602
I (22797) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (22797) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (22797) MQTT_SIGNALING: 数据长度: 99
I (22807) MQTT_SIGNALING: 数据内容: {deviceId=98A316CB1A14, type=sfu, method=groupId, userId=98A316CB1A14, id=joinRoom, groupId=100000}
I (22817) MQTT_SIGNALING: 消息处理任务启动
I (22817) MQTT_SIGNALING: =============================
I (22817) MQTT_SIGNALING: 已注册消息接收回调
I (22827) MQTT_SIGNALING: 调用消息回调函数...
I (22837) WEBRTC_PEER: ✅ 获取到GroupId: 100000
I (22837) WEBRTC_PEER: ✅ WebRTC Peer初始化完成
I (22847) WEBRTC_PEER: ========================================
I (22847) WEBRTC_PEER: 启动WebRTC连接流程
I (22857) WEBRTC_PEER: ========================================
I (22857) WEBRTC_PEER: 【步骤1】请求获取GroupId
I (22867) MQTT_SIGNALING: 消息已发布, msg_id=21747
I (22867) WEBRTC_PEER: 已发送GroupId请求
I (22877) WEBRTC_PEER: 【步骤2】配置STUN服务器并创建Peer连接
I (22877) DTLS: Init SRTP OK
I (23077) MQTT_SIGNALING: 消息发布成功, msg_id=21747
I (23087) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (23087) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (23087) MQTT_SIGNALING: 数据长度: 99
I (23087) MQTT_SIGNALING: 数据内容: {deviceId=98A316CB1A14, type=sfu, method=groupId, userId=98A316CB1A14, id=joinRoom, groupId=100000}
I (23107) MQTT_SIGNALING: =============================
I (23107) MQTT_SIGNALING: 调用消息回调函数...
I (23347) WEBRTC_PEER: ✅ Peer连接已创建
I (23347) WEBRTC_PEER: Peer主循环任务启动
I (23347) WEBRTC_PEER: Peer状态变化: 2
I (23347) WEBRTC_PEER: ✅ 已请求生成SDP Offer
I (23357) AGENT: Start agent as Controlling
I (23357) PEER_DEF: Start DTLS role as 1
I (23357) WEBRTC_PEER: 【步骤4】生成SDP Offer,发送到后端
I (23367) MQTT_SIGNALING: 消息已发布, msg_id=55307
I (23367) WEBRTC_PEER: ✅ SDP Offer已发送
I (23377) WEBRTC_PEER: 📡 等待SDP交换和ICE连接...
I (23377) main_app: ========================================
I (23387) main_app: 系统初始化完成,进入运行状态
I (23387) main_app: WebRTC正在建立连接...
I (23397) main_app: ========================================
I (23587) MQTT_SIGNALING: 消息发布成功, msg_id=55307
I (23597) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (23597) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (23597) MQTT_SIGNALING: 数据长度: 613
I (23597) MQTT_SIGNALING: 数据内容: {"deviceId":"98A316CB1A14","type":"answer","result":"v=0\r\no=- 3969675584 3969675584 IN IP4 0.0.0.0\r\ns=Kurento Media Server\r\nc=IN IP4 0.0.0.0\r\nt=0 0\r\na=msid-semantic: esp-webrtc\r\na=group:BUNDLE 0\r\nm=audio 1 UDP/TLS/RTP/SAVP 111\r\na=sendrecv\r\na=mid:0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-mux\r\na=setup:active\r\na=ssrc:4275300280 cname:user2058707793@host-27ea0cb8\r\na=ice-ufrag:ogbh\r\na=ice-pwd:p3+peJay/fxaFmn7GFwPPx\r\na=fingerprint:sha-256 06:F0:90:99:95:D6:8E:9B:68:4D:DE:8D:00:A2:A3:CF:E6:7B:8A:FB:45:33:BD:67:A0:DF:98:12:BA:24:EB:66\r\n","method":"sdpAnswer"}
E (23607) AGENT: 0 Not found for bind remote 192.168.66.99:11242
I (23657) MQTT_SIGNALING: =============================
I (23667) MQTT_SIGNALING: 调用消息回调函数...
I (23667) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (23667) WEBRTC_PEER: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
I (23677) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (23687) WEBRTC_PEER: 📥 收到SDP Answer
I (23697) MQTT_SIGNALING: 数据长度: 263
I (23697) WEBRTC_PEER: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
I (23707) MQTT_SIGNALING: 数据内容: {"type":"candidate","result":"candidate:13 2 UDP 2015364350 fe80::dcde:d9ff:fecc:d23 21568 typ host","method":"candidate","candidate":"candidate:13 2 UDP 2015364350 fe80::dcde:d9ff:fecc:d23 21568 typ host","sdpMid":"0","sdpMLineIndex":0,"deviceId":"98A316CB1A14"}
I (23717) WEBRTC_PEER: 【步骤5】处理SDP Answer
I (23747) MQTT_SIGNALING: =============================
I (23747) PEER_DEF: Get peer role 0
I (23757) PEER_DEF: A SRC: 4275300280
I (23757) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (23767) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (23767) MQTT_SIGNALING: 数据长度: 265
I (23777) MQTT_SIGNALING: 数据内容: {"type":"candidate","result":"candidate:10 2 UDP 2015364094 fe80::a4a3:5c78:38bf:30ff 53266 typ host","method":"candidate","candidate":"candidate:10 2 UDP 2015364094 fe80::a4a3:5c78:38bf:30ff 53266 typ host","sdpMid":"0","sdpMLineIndex":0,"deviceId":"98A316CB1A14"}
I (23797) MQTT_SIGNALING: =============================
I (23807) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (23817) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (23817) MQTT_SIGNALING: 数据长度: 287
I (23827) MQTT_SIGNALING: 数据内容: {"type":"candidate","result":"candidate:11 2 TCP 1015022590 fe80::a4a3:5c78:38bf:30ff 9 typ host tcptype active","method":"candidate","candidate":"candidate:11 2 TCP 1015022590 fe80::a4a3:5c78:38bf:30ff 9 typ host tcptype active","sdpMid":"0","sdpMLineIndex":0,"deviceId":"98A316CB1A14"}
SDP not contain candidate continue
I (23847) MQTT_SIGNALING: =============================
I (23857) WEBRTC_PEER: ✅ SDP Answer已发送到esp_peer处理
I (23867) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (23867) MQTT_SIGNALING: 调用消息回调函数...
I (23867) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (23887) MQTT_SIGNALING: 数据长度: 265
I (23877) WEBRTC_PEER: 🔹 收到后端ICE: candidate:13 2 UDP 2015364350 fe80::dcde:d9ff:fecc...
I (23887) MQTT_SIGNALING: 数据内容: {"type":"candidate","result":"candidate:9 2 TCP 1010828030 172.18.0.1 39140 typ host tcptype passive","method":"candidate","candidate":"candidate:9 2 TCP 1010828030 172.18.0.1 39140 typ host tcptype passive","sdpMid":"0","sdpMLineIndex":0,"deviceId":"98A316CB1A14"}
I (23917) MQTT_SIGNALING: =============================
I (23927) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (23937) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (23937) MQTT_SIGNALING: 数据长度: 297
I (23947) MQTT_SIGNALING: 数据内容: {"type":"candidate","result":"candidate:18 2 TCP 1010828798 fe80::b41b:6bff:febb:9529 64878 typ host tcptype passive","method":"candidate","candidate":"candidate:18 2 TCP 1010828798 fe80::b41b:6bff:febb:9529 64878 typ host tcptype passive","sdpMid":"0","sdpMLineIndex":0,"deviceId":"98A316CB1A14"}
I (23977) MQTT_SIGNALING: =============================
I (23977) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (23987) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (23987) MQTT_SIGNALING: 数据长度: 255
I (23997) MQTT_SIGNALING: 数据内容: {"type":"candidate","result":"candidate:8 2 TCP 1015022334 172.18.0.1 9 typ host tcptype active","method":"candidate","candidate":"candidate:8 2 TCP 1015022334 172.18.0.1 9 typ host tcptype active","sdpMid":"0","sdpMLineIndex":0,"deviceId":"98A316CB1A14"}
I (24007) WEBRTC_PEER: Peer状态变化: 3
I (24017) MQTT_SIGNALING: =============================
I (24027) main_app: 🔗 ICE配对中...
I (24027) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (24037) MQTT_SIGNALING: 调用消息回调函数...
I (24037) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (24047) WEBRTC_PEER: 🔹 收到后端ICE: candidate:10 2 UDP 2015364094 fe80::a4a3:5c78:38bf...
I (24047) MQTT_SIGNALING: 数据长度: 265
I (24057) MQTT_SIGNALING: 数据内容: {"type":"candidate","result":"candidate:16 2 UDP 2015364606 fe80::b41b:6bff:febb:9529 23368 typ host","method":"candidate","candidate":"candidate:16 2 UDP 2015364606 fe80::b41b:6bff:febb:9529 23368 typ host","sdpMid":"0","sdpMLineIndex":0,"deviceId":"98A316CB1A14"}
I (24087) MQTT_SIGNALING: =============================
I (24177) WEBRTC_PEER: Peer状态变化: 3
I (24177) WEBRTC_PEER: Peer状态变化: 7
I (24177) main_app: 🔗 ICE配对中...
E (24177) main_app: ❌ WebRTC连接失败
I (24177) MQTT_SIGNALING: 调用消息回调函数...
I (24177) WEBRTC_PEER: 🔹 收到后端ICE: candidate:11 2 TCP 1015022590 fe80::a4a3:5c78:38bf...
I (24207) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (24207) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (24207) MQTT_SIGNALING: 数据长度: 265
I (24207) MQTT_SIGNALING: 数据内容: {"type":"candidate","result":"candidate:6 2 TCP 1010827774 172.19.0.1 64618 typ host tcptype passive","method":"candidate","candidate":"candidate:6 2 TCP 1010827774 172.19.0.1 64618 typ host tcptype passive","sdpMid":"0","sdpMLineIndex":0,"deviceId":"98A316CB1A14"}
I (24237) MQTT_SIGNALING: =============================
I (24247) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (24247) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (24257) MQTT_SIGNALING: 数据长度: 255
I (24257) MQTT_SIGNALING: 数据内容: {"type":"candidate","result":"candidate:5 2 TCP 1015022078 172.19.0.1 9 typ host tcptype active","method":"candidate","candidate":"candidate:5 2 TCP 1015022078 172.19.0.1 9 typ host tcptype active","sdpMid":"0","sdpMLineIndex":0,"deviceId":"98A316CB1A14"}
I (24287) MQTT_SIGNALING: =============================
E (24287) AGENT: 0 Not found for bind remote 192.168.66.99:11242
I (24297) MQTT_SIGNALING: ====== 接收到MQTT消息 ======
I (24297) WEBRTC_PEER: Peer状态变化: 3
I (24297) MQTT_SIGNALING: 主题: /public/striped-kind-tiger/result/98A316CB1A14
I (24307) main_app: 🔗 ICE配对中...
I (24307) MQTT_SIGNALING: 数据长度: 233
I (24317) MQTT_SIGNALING: 调用消息回调函数...
I (24317) MQTT_SIGNALING: 数据内容: {"type":"candidate","result":"candidate:7 2 UDP 2015363838 172.18.0.1 19307 typ host","method":"candidate","candidate":"candidate:7 2 UDP 2015363838 172.18.0.1 19307 typ host","sdpMid":"0","sdpMLineIndex":0,"deviceId":"98A316CB1A14"}
I (24327) WEBRTC_PEER: 🔹 收到后端ICE: candidate:9 2 TCP 1010828030 172.18.0.1 39140 typ ...
I (24347) MQTT_SIGNALING: =============================
I (24467) WEBRTC_PEER: Peer状态变化: 3
I (24467) WEBRTC_PEER: Peer状态变化: 7
I (24467) main_app: 🔗 ICE配对中...
E (24467) main_app: ❌ WebRTC连接失败
I (24467) MQTT_SIGNALING: 调用消息回调函数...
I (24467) WEBRTC_PEER: 🔹 收到后端ICE: candidate:18 2 TCP 1010828798 fe80::b41b:6bff:febb...
I (24637) WEBRTC_PEER: Peer状态变化: 3
I (24637) main_app: 🔗 ICE配对中...
I (24637) MQTT_SIGNALING: 调用消息回调函数...
I (24637) WEBRTC_PEER: 🔹 收到后端ICE: candidate:8 2 TCP 1015022334 172.18.0.1 9 typ host...
I (24807) WEBRTC_PEER: Peer状态变化: 3
I (24807) WEBRTC_PEER: Peer状态变化: 7
I (24807) main_app: 🔗 ICE配对中...
E (24807) main_app: ❌ WebRTC连接失败
I (24807) MQTT_SIGNALING: 调用消息回调函数...
I (24807) WEBRTC_PEER: 🔹 收到后端ICE: candidate:16 2 UDP 2015364606 fe80::b41b:6bff:febb...
I (24977) WEBRTC_PEER: Peer状态变化: 3
I (24977) main_app: 🔗 ICE配对中...
I (24977) MQTT_SIGNALING: 调用消息回调函数...
I (24977) WEBRTC_PEER: 🔹 收到后端ICE: candidate:6 2 TCP 1010827774 172.19.0.1 64618 typ ...
E (25117) AGENT: 0 Not found for bind remote 192.168.66.99:11242
I (25117) WEBRTC_PEER: Peer状态变化: 3
I (25117) WEBRTC_PEER: Peer状态变化: 7
I (25127) main_app: 🔗 ICE配对中...
E (25127) main_app: ❌ WebRTC连接失败
I (25127) MQTT_SIGNALING: 调用消息回调函数...
I (25137) WEBRTC_PEER: 🔹 收到后端ICE: candidate:5 2 TCP 1015022078 172.19.0.1 9 typ host...
I (25297) WEBRTC_PEER: Peer状态变化: 3
I (25297) main_app: 🔗 ICE配对中...
I (25297) MQTT_SIGNALING: 调用消息回调函数...
I (25297) WEBRTC_PEER: 🔹 收到后端ICE: candidate:7 2 UDP 2015363838 172.18.0.1 19307 typ ...
I (25467) AGENT: 0 Add remote type:1 172.18.0.1:19307
0 Sorted pair 0 type: 1 local:192.168.66.117:55577 Remote:172.18.0.1:19307
I (25467) WEBRTC_PEER: Peer状态变化: 3
I (25467) AGENT: 0 Send binding request (cand:0) local:192.168.66.117:55577 remote:172.18.0.1:19307 id:7043bfa4398150e937521657
I (25467) main_app: 🔗 ICE配对中...
I (25987) AGENT: 0 Send binding request (cand:0) local:192.168.66.117:55577 remote:172.18.0.1:19307 id:4d9a2fdb76c3625e55075020
I (26497) AGENT: 0 Send binding request (cand:0) local:192.168.66.117:55577 remote:172.18.0.1:19307 id:329b54fb381fc0385378d5a8
I (27007) AGENT: 0 Send binding request (cand:0) local:192.168.66.117:55577 remote:172.18.0.1:19307 id:76e5004e797d87a62756c714
I (27517) AGENT: 0 Send binding request (cand:0) local:192.168.66.117:55577 remote:172.18.0.1:19307 id:4c598d93643bd7252b449456
I (28027) AGENT: 0 Send binding request (cand:0) local:192.168.66.117:55577 remote:172.18.0.1:19307 id:671286247899e644088232df
I (28537) WEBRTC_PEER: Peer状态变化: 7
E (28537) main_app: ❌ WebRTC连接失败Steps to reproduce the behavior
1、获取群组id,将id嵌入在sdp和ice的json字段中
2、发送sdpOffer
3、收到来自后端的answer和ice候选
4、丢给API处理answer,并完成ice交换
5、尝试连接到后端返回的内网地址
6、连接失败!❌
Project release version
esp_peer v1.2.6
System architecture
Intel/AMD 64-bit (modern PC, older Mac)
Operating system
Windows
Operating system version
windows 10
Shell
CMD
Additional context
主入口:
ESP_LOGI(TAG, "【II】初始化并启动WebRTC");
// 配置WebRTC Peer
webrtc_peer_cfg_t peer_cfg = {
.state_callback = webrtc_state_callback,
.audio_callback = webrtc_audio_callback,
.ctx = NULL,
};
// 初始化WebRTC Peer(会自动连接MQTT)
esp_err_t ret = webrtc_peer_init(&peer_cfg);
if (ret != ESP_OK) {
ESP_LOGE(TAG, "WebRTC Peer初始化失败,程序终止");
while (1) {
vTaskDelay(pdMS_TO_TICKS(5000));
}
}
// 启动WebRTC流程(自动处理GroupId、SDP交换、ICE协商)
ret = webrtc_peer_start();
if (ret != ESP_OK) {
ESP_LOGE(TAG, "WebRTC连接流程失败");
}
WebRTC核心逻辑:
static void mqtt_message_handler(const char *topic, const char *data, int data_len)
{
if (!running) {
return;
}
// 1. 如果还没有groupId,先解析groupId
if (!group_id_received) {
parse_group_id_response(data, data_len);
return;
}
// 2. 处理SDP Answer
if (strstr(data, "\"type\":\"answer\"") != NULL) {
ESP_LOGI(TAG, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
ESP_LOGI(TAG, "📥 收到SDP Answer");
ESP_LOGI(TAG, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
handle_sdp_answer(data, data_len);
return;
}
// 3. 处理ICE Candidate
if (strstr(data, "\"type\":\"candidate\"") != NULL) {
handle_ice_candidate(data, data_len);
return;
}
}
整体连接流程
esp_err_t webrtc_peer_start(void)
{
ESP_LOGI(TAG, "========================================");
ESP_LOGI(TAG, " 启动WebRTC连接流程");
ESP_LOGI(TAG, "========================================");
// 【步骤1】请求获取GroupId
ESP_LOGI(TAG, "【步骤1】请求获取GroupId");
cJSON *root = cJSON_CreateObject();
if (root == NULL) {
return ESP_ERR_NO_MEM;
}
cJSON_AddStringToObject(root, "deviceId", device_mac);
cJSON_AddStringToObject(root, "type", "sfu");
cJSON_AddStringToObject(root, "method", "groupId");
char *json_str = cJSON_PrintUnformatted(root);
cJSON_Delete(root);
if (json_str) {
mqtt_signaling_publish((uint8_t *)json_str, strlen(json_str));
ESP_LOGI(TAG, "已发送GroupId请求");
free(json_str);
}
// 等待GroupId响应(最多30秒)
EventBits_t bits = xEventGroupWaitBits(event_group, GROUPID_RECEIVED_BIT,
pdTRUE, pdFALSE, pdMS_TO_TICKS(30000));
if (!(bits & GROUPID_RECEIVED_BIT)) {
ESP_LOGE(TAG, "❌ 等待GroupId超时");
return ESP_FAIL;
}
// 【步骤2】配置并创建esp_peer
ESP_LOGI(TAG, "【步骤2】配置STUN服务器并创建Peer连接");
// 重新启用STUN服务器,帮助建立连接
esp_peer_ice_server_cfg_t ice_server = {
.stun_url = STUN_SERVER_URL,
.user = NULL,
.psw = NULL,
};
esp_peer_audio_stream_info_t audio_info = {
.codec = AUDIO_CODEC,
.sample_rate = AUDIO_SAMPLE_RATE,
.channel = AUDIO_CHANNEL,
};
esp_peer_cfg_t peer_cfg = {
.server_lists = &ice_server,
.server_num = 1,
.role = ESP_PEER_ROLE_CONTROLLING, // 作为发起方
.ice_trans_policy = ESP_PEER_ICE_TRANS_POLICY_ALL,
.audio_info = audio_info,
.video_info = {0},
.audio_dir = ESP_PEER_MEDIA_DIR_SEND_RECV,
.video_dir = ESP_PEER_MEDIA_DIR_NONE,
.no_auto_reconnect = false,
.enable_data_channel = false,
.ctx = NULL,
.on_state = peer_state_callback,
.on_msg = peer_msg_callback,
.on_audio_data = peer_audio_data_callback,
.on_video_data = NULL,
.on_audio_info = NULL,
.on_video_info = NULL,
};
int ret = esp_peer_open(&peer_cfg, esp_peer_get_default_impl(), &peer_handle);
if (ret != ESP_PEER_ERR_NONE) {
ESP_LOGE(TAG, "创建Peer失败: %d", ret);
return ESP_FAIL;
}
ESP_LOGI(TAG, "✅ Peer连接已创建");
// 创建主循环任务
xTaskCreate(peer_main_loop_task, "peer_loop", 10 * 1024, NULL, 5, NULL);
// 【步骤3】创建新连接(触发SDP生成)
ret = esp_peer_new_connection(peer_handle);
if (ret != ESP_PEER_ERR_NONE) {
ESP_LOGE(TAG, "创建新连接失败: %d", ret);
return ESP_FAIL;
}
ESP_LOGI(TAG, "✅ 已请求生成SDP Offer");
ESP_LOGI(TAG, "📡 等待SDP交换和ICE连接...");
return ESP_OK;
}
Metadata
Metadata
Assignees
Labels
No labels