Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

argument error on WebSocketsClient::beginSSL. with the default example. #101

Open
ebadfd opened this issue May 1, 2022 · 6 comments
Open

Comments

@ebadfd
Copy link

ebadfd commented May 1, 2022

Hi, i been trying to connect to a socket.io server using this library. and im facing a issue. below is the complete stack trace

Arduino: 1.8.19 (Linux), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200"


/home/dasith/Arduino/libraries/SocketIoClient/SocketIoClient.cpp: In member function 'void SocketIoClient::beginSSL(const char*, int, const char*, const char*)':
/home/dasith/Arduino/libraries/SocketIoClient/SocketIoClient.cpp:46:39: error: invalid conversion from 'const char*' to 'const uint8_t*' {aka 'const unsigned char*'} [-fpermissive]
   46 |  _webSocket.beginSSL(host, port, url, fingerprint);
      |                                       ^~~~~~~~~~~
      |                                       |
      |                                       const char*
In file included from /home/dasith/Arduino/libraries/SocketIoClient/SocketIoClient.h:7,
                 from /home/dasith/Arduino/libraries/SocketIoClient/SocketIoClient.cpp:1:
/home/dasith/Arduino/libraries/WebSockets-2.3.6/src/WebSocketsClient.h:50:93: note:   initializing argument 4 of 'void WebSocketsClient::beginSSL(const char*, uint16_t, const char*, const uint8_t*, const char*)'
   50 |     void beginSSL(const char * host, uint16_t port, const char * url = "/", const uint8_t * fingerprint = NULL, const char * protocol = "arduino");
      |                                                                                             ^
exit status 1
Error compiling for board NodeMCU 1.0 (ESP-12E Module).


This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

it seems like a issue with conversion and my code is almost the default example. i have attached it below.

#include <Arduino.h>

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>

#include <SocketIoClient.h>

#define USE_SERIAL Serial

ESP8266WiFiMulti WiFiMulti;
SocketIoClient webSocket;

void event(const char * payload, size_t length) {
  USE_SERIAL.printf("got message: %s\n", payload);
}

void setup() {
    USE_SERIAL.begin(115200);

    USE_SERIAL.setDebugOutput(true);

    USE_SERIAL.println();
    USE_SERIAL.println();
    USE_SERIAL.println();

      for(uint8_t t = 4; t > 0; t--) {
          USE_SERIAL.printf("[SETUP] BOOT WAIT %d...\n", t);
          USE_SERIAL.flush();
          delay(1000);
      }

    WiFiMulti.addAP("SSID", "passpasspass");

    while(WiFiMulti.run() != WL_CONNECTED) {
        delay(100);
    }

    webSocket.on("event", event);
    webSocket.begin("my.socket-io.server");
}

void loop() {
    webSocket.loop();
}

thanks in advance.

@Egykaya
Copy link

Egykaya commented Jun 13, 2022

It happened to me. After some research i realized it has something to do with the board manager

In the menu bar, open Tools > Board > Boards Manager.
then type esp8 in the search box
then from the drop-down menu chose version 2.4.0, then click install (higher board manager versions might work too but i haven't tried it yet)

then you should be able to compile without errors

image

@ebadfd
Copy link
Author

ebadfd commented Jun 14, 2022

It happened to me. After some research i realized it has something to do with the board manager

In the menu bar, open Tools > Board > Boards Manager.
then type esp8 in the search box
then from the drop-down menu chose version 2.4.0, then click install (higher board manager versions might work too but i haven't tried it yet)

then you should be able to compile without errors

image

oh thanks that works !

@itaygenkin
Copy link

I have version 3.0.2, and I had the same issue. So I added casting to fingerprint in the function beginSSL (const char*) --> (uint8_t*), and then everything was working well.

@AlfatArdiansa
Copy link

I have version 3.0.2, and I had the same issue. So I added casting to fingerprint in the function beginSSL (const char*) --> (uint8_t*), and then everything was working well.

Can you give me detail how to do it?

@itaygenkin
Copy link

itaygenkin commented Jul 22, 2022

I have version 3.0.2, and I had the same issue. So I added casting to fingerprint in the function beginSSL (const char*) --> (uint8_t*), and then everything was working well.

Can you give me detail how to do it?

Open "...Arduino/libraries/SocketIoClient/SocketIoClient.cpp" in your computer, then go to the function "void SocketIoClient::beginSSL(const char* host, const int port, const char* url, const char* fingerprint)" and add " (uint8_t*) " where it is in the following line:
_webSocket.beginSSL(host, port, URL, (uint8_t*) fingerprint);

Let me know if you still have a problem.

@Jayasubin
Copy link

I was scratching my head for the past two hours thinking why .beginSSL() was showing up even though I am just using the .begin().

Thanks @itaygenkin for the solution; It worked.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants