ESP32开发WebSocket报错TRANSPORT_WS: Sec-WebSocket-Accept not found

我的芯片是ESP32-S3,用ESP-IDF框架进行开发的时候,用官方的WebSocket的example创建了项目。然后把WebSocket连接uri替换为自己的服务器后,运行到esp_websocket_client_start开始连接后,直接报错:

E (10615) TRANSPORT_WS: Sec-WebSocket-Accept not found
E (10615) WEBSOCKET_CLIENT: Error transport connect

但是同样的地址,我在Postman里面,可以正常连接上。看这个报错,应该说是服务器没有返回Sec-WebSocket-Accept头信息,找不到这个。

但是,我在Postman中,看到服务器是有返回这个头的。

那就不知道是啥情况了,搞不明白。看了官方的github中,也有针对这个问题的讨论。

具体地址:(IDF Websocket client) - TRANSPORT_WS: Sec-WebSocket-Accept not found (IDFGH-11911) · Issue #12993 · espressif/esp-idf · GitHub

貌似是说,服务器端是支持ws和wss协议的,而esp32中的esp_websocket_client不支持redirects重定向,当然我的服务器也是2种协议都支持的。感觉这问题无解,如果你有解请评论区告诉我。我的解决办法是,从ws改成wss协议的。

修改后,运行却又报错了。

E (12436) esp-tls-mbedtls: No server verification option set in esp_tls_cfg_t structure. Check esp_tls API reference
E (12436) esp-tls-mbedtls: Failed to set client configurations, returned [0x8017] (ESP_ERR_MBEDTLS_SSL_SETUP_FAILED)
E (12456) esp-tls: create_ssl_handle failed
E (12456) esp-tls: Failed to open new connection
E (12466) TRANSPORT_BASE: Failed to open a new connection
E (12466) TRANSPORT_WS: Error connecting to host metamind.cn:443
E (12476) WEBSOCKET_CLIENT: Error transport connect

这个貌似是证书的问题,需要把服务器证书down下来一起烧录进去。比较麻烦。索性在配置中修改以下配置:

勾上这2个选项即可。

问题解决可用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值