Skip to content

Struggling to connect WSS with ESP32 #171

@mgk815

Description

@mgk815

Hello! I am having a similar issue to #101. I have the following board: https://www.adafruit.com/product/5477 and I am trying to connect to a secure web socket: found here https://websocket.org/tools/websocket-echo-server at this endpoint: https://echo.websocket.org/

Here is my code. I tried both the first and second certificate generated by this command (openssl s_client -showcerts -connect websocket.org:443) and neither works. I get the printout "WebSocket Connection Failed! Check server address and SSL certificate." The formatting is not appearing, but it is with the format of

PROGMEM = \

"MIIE6TCCA9GgAwIBAgISAyfetQLKZe+05ueVkHvRbynzMA0GCSqGSIb3DQEBCwUA\n" \

What am I missing?

Thank you!

#include <ArduinoWebsockets.h>
#include <WiFi.h>

const char* ssid = "Rehema"; //Enter SSID
const char* password = "qazWSX11!!"; //Enter Password

const char* websockets_connection_string = "wss://echo.websocket.org/"; //Enter server address

const char echo_org_ssl_ca_cert1[] PROGMEM =
"-----BEGIN CERTIFICATE-----\n"
"MIIE6TCCA9GgAwIBAgISAyfetQLKZe+05ueVkHvRbynzMA0GCSqGSIb3DQEBCwUA\n"
"MDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD\n"
"EwNSMTAwHhcNMjQxMjMwMTA0NDM2WhcNMjUwMzMwMTA0NDM1WjAYMRYwFAYDVQQD\n"
"Ew13ZWJzb2NrZXQub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n"
"mpjGE8GxGx7h0QyHPx29ZYyhsNtMNnsfBFI8hNbalxRIsa2J5+5qjsyWMPtdOQXs\n"
"o+z4gPz5So4f0/zAIjYck18ho2BCCXcOrXXSlyduZ/yyBrhG23YrJI2obGQfpJnr\n"
"ICJ8qALhq8bjpNMpu3hnepyCLttMOMGA5dTsoiX2Qm4PR3HODQwE40RyKixeA1jP\n"
"5xVEjGfUO+Y1B5W5BEdH2x8wiGkHcXcdHViCpQU7Rnginmxjw8WpIBiYSQS51Osq\n"
"8QfzyfMi5m9Eu9C3e6Rj0zJBQZHbVZ0QbGzyerOpCRRXube4CGecw2WbzC6lAVyk\n"
"0rrGNwtXweoVI9vRphj5TQIDAQABo4ICEDCCAgwwDgYDVR0PAQH/BAQDAgWgMB0G\n"
"A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1Ud\n"
"DgQWBBSN8hIPmDa2D5F5YiX6MJXHzDZihzAfBgNVHSMEGDAWgBS7vMNHpeS8qcbD\n"
"pHIMEI2iNeHI6DBXBggrBgEFBQcBAQRLMEkwIgYIKwYBBQUHMAGGFmh0dHA6Ly9y\n"
"MTAuby5sZW5jci5vcmcwIwYIKwYBBQUHMAKGF2h0dHA6Ly9yMTAuaS5sZW5jci5v\n"
"cmcvMBgGA1UdEQQRMA+CDXdlYnNvY2tldC5vcmcwEwYDVR0gBAwwCjAIBgZngQwB\n"
"AgEwggEDBgorBgEEAdZ5AgQCBIH0BIHxAO8AdQCi4wrkRe+9rZt+OO1HZ3dT14Jb\n"
"hJTXK14bLMS5UKRH5wAAAZQXYHqtAAAEAwBGMEQCICiteubTqIQ+DoDtoiybC7IW\n"
"B/wbnQMw6Zl5Zsp+AaOVAiAKG51u6om7lf0zahRM6t9xb6gk+EyfVWQHX2GPsqaZ\n"
"OQB2AM8RVu7VLnyv84db2Wkum+kacWdKsBfsrAHSW3fOzDsIAAABlBdgeuQAAAQD\n"
"AEcwRQIgfDxlq8fBd4CP1rPokZUHHCt5bqKrdePDMQWsB7Vcd2wCIQC/XD2eP76b\n"
"WfhB1rmLZ18JUMMmWamyqSQf1N8gZgmCJjANBgkqhkiG9w0BAQsFAAOCAQEAQ+wf\n"
"OFPUp8yZPYmoH9PpOTnUx5AghyBxwHUwwrrpTy3skY32Dz5pn5LQz9ny6UqNQJnB\n"
"w4239zFjeGC0ROupZ1gcfcoUIDiqFNA9oG1OmgnPYAFoLItkgmujETAhrvkn/0x6\n"
"bWF7YQz07YztiGX1nff7GlPluCDNl/dd4nQQko8VIePjzmJY5Asc8qqPvVyVIO2u\n"
"t1dWajcpbit6lfdbbusQ4K181VT6ns/CZUyydhH4nsXete5SZ9i2Q6e1L/mSwVql\n"
"b3mw6fA3Hv+iSKIQf9lmjx/qo4hAnV8ldn5TdUxwO3ABGyjVy4h6BKPLNa3xze1G\n"
"1qJRyDwLlYVfOkr2Ag==\n"
"-----END CERTIFICATE-----\n";

const char echo_org_ssl_ca_cert2[] PROGMEM =
"-----BEGIN CERTIFICATE-----\n"
"MIIFBTCCAu2gAwIBAgIQS6hSk/eaL6JzBkuoBI110DANBgkqhkiG9w0BAQsFADBP\n"
"MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy\n"
"Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa\n"
"Fw0yNzAzMTIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF\n"
"bmNyeXB0MQwwCgYDVQQDEwNSMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
"AoIBAQDPV+XmxFQS7bRH/sknWHZGUCiMHT6I3wWd1bUYKb3dtVq/+vbOo76vACFL\n"
"YlpaPAEvxVgD9on/jhFD68G14BQHlo9vH9fnuoE5CXVlt8KvGFs3Jijno/QHK20a\n"
"/6tYvJWuQP/py1fEtVt/eA0YYbwX51TGu0mRzW4Y0YCF7qZlNrx06rxQTOr8IfM4\n"
"FpOUurDTazgGzRYSespSdcitdrLCnF2YRVxvYXvGLe48E1KGAdlX5jgc3421H5KR\n"
"mudKHMxFqHJV8LDmowfs/acbZp4/SItxhHFYyTr6717yW0QrPHTnj7JHwQdqzZq3\n"
"DZb3EoEmUVQK7GH29/Xi8orIlQ2NAgMBAAGjgfgwgfUwDgYDVR0PAQH/BAQDAgGG\n"
"MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/\n"
"AgEAMB0GA1UdDgQWBBS7vMNHpeS8qcbDpHIMEI2iNeHI6DAfBgNVHSMEGDAWgBR5\n"
"tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKG\n"
"Fmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0gBAwwCjAIBgZngQwBAgEwJwYD\n"
"VR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVuY3Iub3JnLzANBgkqhkiG9w0B\n"
"AQsFAAOCAgEAkrHnQTfreZ2B5s3iJeE6IOmQRJWjgVzPw139vaBw1bGWKCIL0vIo\n"
"zwzn1OZDjCQiHcFCktEJr59L9MhwTyAWsVrdAfYf+B9haxQnsHKNY67u4s5Lzzfd\n"
"u6PUzeetUK29v+PsPmI2cJkxp+iN3epi4hKu9ZzUPSwMqtCceb7qPVxEbpYxY1p9\n"
"1n5PJKBLBX9eb9LU6l8zSxPWV7bK3lG4XaMJgnT9x3ies7msFtpKK5bDtotij/l0\n"
"GaKeA97pb5uwD9KgWvaFXMIEt8jVTjLEvwRdvCn294GPDF08U8lAkIv7tghluaQh\n"
"1QnlE4SEN4LOECj8dsIGJXpGUk3aU3KkJz9icKy+aUgA+2cP21uh6NcDIS3XyfaZ\n"
"QjmDQ993ChII8SXWupQZVBiIpcWO4RqZk3lr7Bz5MUCwzDIA359e57SSq5CCkY0N\n"
"4B6Vulk7LktfwrdGNVI5BsC9qqxSwSKgRJeZ9wygIaehbHFHFhcBaMDKpiZlBHyz\n"
"rsnnlFXCb5s8HKn5LsUgGvB24L7sGNZP2CX7dhHov+YhD+jozLW2p9W4959Bz2Ei\n"
"RmqDtmiXLnzqTpXbI+suyCsohKRg6Un0RC47+cpiVwHiXZAW+cn8eiNIjqbVgXLx\n"
"KPpdzvvtTnOPlC7SQZSYmdunr3Bf9b77AiC/ZidstK36dRILKz7OA54=v\n"
"-----END CERTIFICATE-----\n";

using namespace websockets;

void onMessageCallback(WebsocketsMessage message) {
Serial.print("Got Message: ");
Serial.println(message.data());
}

void onEventsCallback(WebsocketsEvent event, String data) {
if (event == WebsocketsEvent::ConnectionOpened) {
Serial.println("WebSocket Connection Opened");
} else if (event == WebsocketsEvent::ConnectionClosed) {
Serial.println("WebSocket Connection Closed");
} else if (event == WebsocketsEvent::GotPing) {
Serial.println("Got a Ping!");
} else if (event == WebsocketsEvent::GotPong) {
Serial.println("Got a Pong!");
}
}

WebsocketsClient client;

void setup() {
Serial.begin(115200);
Serial.println("Starting ESP32 WebSocket Client...");

// Connect to WiFi
Serial.print("Connecting to WiFi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);

int retry_count = 0;
while (WiFi.status() != WL_CONNECTED && retry_count < 10) {
    Serial.print(".");
    delay(1000);
    retry_count++;
}

if (WiFi.status() == WL_CONNECTED) {
    Serial.println("\nWiFi Connected!");
} else {
    Serial.println("\nWiFi Connection Failed! Check SSID/Password.");
    return;
}
// Set up WebSocket callbacks
client.onMessage(onMessageCallback);
client.onEvent(onEventsCallback);

// Set SSL certificate
client.setCACert(echo_org_ssl_ca_cert2);
Serial.print(echo_org_ssl_ca_cert2);

// Connect to WebSocket server
Serial.print("Connecting to WebSocket: ");
Serial.println(websockets_connection_string);

client.connect(websockets_connection_string);

if (!client.connect(websockets_connection_string)) {
    Serial.println("WebSocket Connection Failed! Check server address and SSL certificate."); //function breaks here
    return;
}

Serial.println("WebSocket Connected!");

// Send initial messages
client.send("Hello Server");
client.ping();

}

void loop() {
if (client.available()) {
client.poll();
} else {
Serial.println("WebSocket Disconnected! Attempting Reconnect...");
if (!client.connect(websockets_connection_string)) {
Serial.println("Reconnect Failed.");
} else {
Serial.println("Reconnected to WebSocket!");
}
delay(5000); // Wait before retrying
}
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions