| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /*
- Secured Esp32 Websockets Client
- This sketch:
- 1. Connects to a WiFi network
- 2. Connects to a Websockets server (using WSS)
- 3. Sends the websockets server a message ("Hello Server")
- 4. Sends the websocket server a "ping"
- 5. Prints all incoming messages while the connection is open
- NOTE:
- The sketch dosen't check or indicate about errors while connecting to
- WiFi or to the websockets server. For full example you might want
- to try the example named "Esp32-Client" (And use the ssl methods).
- Hardware:
- For this sketch you only need an Esp32 board.
- Created 15/02/2019
- By Gil Maimon
- https://github.com/gilmaimon/ArduinoWebsockets
- */
- #include <ArduinoWebsockets.h>
- #include <WiFi.h>
- const char* ssid = "ssid"; //Enter SSID
- const char* password = "password"; //Enter Password
- const char* websockets_connection_string = "wss://echo.websocket.org/"; //Enter server adress
- // This certificate was updated 20.04.2019
- const char echo_org_ssl_ca_cert[] PROGMEM = \
- "-----BEGIN CERTIFICATE-----\n" \
- "MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/\n" \
- "MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n" \
- "DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow\n" \
- "SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT\n" \
- "GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC\n" \
- "AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF\n" \
- "q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8\n" \
- "SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0\n" \
- "Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA\n" \
- "a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj\n" \
- "/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T\n" \
- "AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG\n" \
- "CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv\n" \
- "bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k\n" \
- "c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw\n" \
- "VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC\n" \
- "ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz\n" \
- "MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu\n" \
- "Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF\n" \
- "AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo\n" \
- "uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/\n" \
- "wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu\n" \
- "X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG\n" \
- "PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6\n" \
- "KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==\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("Connnection Opened");
- } else if(event == WebsocketsEvent::ConnectionClosed) {
- Serial.println("Connnection 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);
- // Connect to wifi
- WiFi.begin(ssid, password);
- // Wait some time to connect to wifi
- for(int i = 0; i < 10 && WiFi.status() != WL_CONNECTED; i++) {
- Serial.print(".");
- delay(1000);
- }
- // run callback when messages are received
- client.onMessage(onMessageCallback);
-
- // run callback when events are occuring
- client.onEvent(onEventsCallback);
- // Before connecting, set the ssl fingerprint of the server
- client.setCACert(echo_org_ssl_ca_cert);
- // Connect to server
- client.connect(websockets_connection_string);
- // Send a message
- client.send("Hello Server");
- // Send a ping
- client.ping();
- }
- void loop() {
- client.poll();
- }
|