程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从 ESP32 连接到部署到 Heroku 的 websocket 服务器时出现问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决从 ESP32 连接到部署到 Heroku 的 websocket 服务器时出现问题?

开发过程中遇到从 ESP32 连接到部署到 Heroku 的 websocket 服务器时出现问题的问题如何解决?下面主要结合日常开发的经验,给出你关于从 ESP32 连接到部署到 Heroku 的 websocket 服务器时出现问题的解决方法建议,希望对你解决从 ESP32 连接到部署到 Heroku 的 websocket 服务器时出现问题有所启发或帮助;

这是我拥有的 ESP32 代码。我使用

生成了一个 .pem 文件

openssl s_clIEnt -showcerts -connect hIDden-thicket-03510.herokuapp.com:443

但我仍然无法使用 WiFisecureClIEnt 连接到服务器。

你能告诉我我做错了什么吗?我的猜测是我在附加证书时做错了什么。

感谢您的帮助

#include <WiFiClIEntSecure.h>
#include <WebSocketClIEnt.h>
#include <ArduinoJson.h> 
const char* ssID     = "##";
const char* password = "###";
 
char path[] = "/";
char host[] = "https://hIDden-thicket-03510.herokuapp.com";
 
WebSocketClIEnt webSocketClIEnt;
WiFiClIEntSecure clIEnt;

const char* test_root_ca= \
  "-----BEGIN CERTIFICATE-----\n" \
  "MIIDxTCCAq2gAwIBAgIQAqxcJmolQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs\n" \
  "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" \
  "d3cuZGlnaWNlcnQuY29tmsswKQYDVQQDEyjeaWdpQ2VydCBIaWdoIEFzc3VyYW5j\n" \
  "ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL\n" \
  "MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3\n" \
  "LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnACBBc3N1cmFuY2Ug\n" \
  "RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQocggEBAMbM5XPm\n" \
  "+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW\n" \
  "PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhphpYlG++MXs2ziS4wblCjeM\n" \
  "xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB\n" \
  "Ik5lYYeBQVcmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakahpQNAQTXKFx01p8VdteZOE3\n" \
  "hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg\n" \
  "EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF\n" \
  "MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQymBaA\n" \
  "FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec\n" \
  "nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDli6z\n" \
  "eM7b41N5cdbliZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF\n" \
  "hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2\n" \
  "Yzi9RKR/5CYrCSSXaQ3pjolAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe\n" \
  "vEsXCS+0yx5damkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJsdnoDfzAIJ9VNep\n" \
  "+OkuE6N36B9K\n" \
  "-----END CERTIFICATE-----\n";

int timer=0;

voID connnect() {
  if (clIEnt.connect(host,443)) {
    serial.println("Connected");
  } else {
    serial.println("Connection Failed.");
  }
 
  webSocketClIEnt.path = path;
  webSocketClIEnt.host = host;
  if (webSocketClIEnt.handshake(clIEnt)) {
    serial.println("Handshake successful");
  } else {
    serial.println("Handshake Failed.");
  }
}

voID setup() {
  serial.begin(115200);
 
  WiFi.begin(ssID,password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    serial.print(".");
  }
 
  serial.println("");
  serial.println("WiFi connected");
  serial.println("IP address: ");
  serial.println(WiFi.localiP());
 
  delay(5000);
  clIEnt.setCACert(test_root_ca);
  
  connnect();

  if (clIEnt.connected()) {
    webSocketClIEnt.sendData("Info to be echoed BACk");
  }
}
 
voID loop() {
  String data;
  
  if (clIEnt.connected()) {
    webSocketClIEnt.getData(data);
    serial.println(data);
    int data_len = data.length() + 1; 
    char char_arraY[data_len];
    data.tochararray(char_array,data_len);
    StaticJsondocument<1200> doc;

    const char* a=doc["message"];
    
    if (data_len > 1) {
      serial.print("Received data: ");
      serial.println(a);
    }
  } else {
    serial.println("ClIEnt disconnected.");
    connnect();
  }
 
  delay(3000);
}

如果有帮助的话,这是在 Heroku 上运行的服务器代码:

var WebSocketServer = require('websocket').server;
var http = require('http');

var server = http.createServer(function(request,responsE) {
    console.log((new Date()) + ' Received request for ' + request.url);
    response.writehead(404);
    response.end();
});
let port =process.env.PORT || 5000;
server.Listen(port,function() {
    console.log((new Date()) + ' Server is Listening on port 5000');
});

wsServer = new WebSocketServer({
    httpServer: server
});
const clIEnts={}
wsServer.on('request',request=> { 
    var connection = request.accept(null,request.origin);
    console.log((new Date()) + ' Connection accepted.');
    
    const clIEntID=guID();
    clIEnts[clIEntID]={
        "connection":connection
    };

    // connection.sendUTF("JsON.Stringify(payload)")
    connection.on('open',()=>{Console.log("opened")})

    connection.on('message',message => {
        console.log(messagE);
        var a=JsON.Stringify({'message':'sdaed'})
        connection.send(a)
        
    });

    connection.on('close',(reasonCode,description) =>{
        console.log((new Date()) + ' Peer ' + connection.remoteAddress + ' disconnected.');
    });

    const payload={
        "method":"connect","clIEntID":clIEntID
    }
    
});

const guID=()=> {
    const s4=()=> Math.floor((1 + Math.random()) * 0x10000).toString(16).subString(1);     
    return `${s4() + s4()}-${s4()}-${s4()}-${s4()}-${s4() + s4() + s4()}`;
  }

串行输出是,

Connected
WaiTing...
WaiTing...
WaiTing...
Handshake Failed.
ClIEnt disconnected.
Connected
WaiTing...
WaiTing...
WaiTing...
Handshake Failed.
ClIEnt disconnected.
Connected
WaiTing...
WaiTing...
WaiTing...
WaiTing...
WaiTing...
Handshake Failed.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的从 ESP32 连接到部署到 Heroku 的 websocket 服务器时出现问题全部内容,希望文章能够帮你解决从 ESP32 连接到部署到 Heroku 的 websocket 服务器时出现问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。