arduino-libraries / ArduinoHttpClient

Arduino HTTP Client library
288 stars 172 forks source link

Reconnect websocket after server restarts? #110

Open mshulman opened 3 years ago

mshulman commented 3 years ago

I'm not sure how this is supposed to work. My code works as long as the server is up before the client attempt to connect. But if the server restarts or otherwise faults, I don't know how to make the code reconnect.

Here's what I'm doing

void setUpSubscription() {
    Serial.println("Setting up subscription");
    client.begin("/signalk/v1/stream?subscribe=none");

    while (!client.connected()) {
      delay(100);
      ; // wait to connect
    }
}

void loop() {
  setUpSubscription();
  while (client.connected()) {
     // do stuff
  }
  Serial.println("client disconnected");
}

The problem is that the client.begin() doesn't work on a disconnected socket (I think).

What's the right thing to do?

ddaydd commented 3 years ago

have you implemented a Ping / Pong request ? maybe it could help you.

mshulman commented 3 years ago

ddaydd-

Is this something that is implemented on the server? If so, how would I know if the server I’m connecting to implements this?

ddaydd commented 3 years ago

you have to implement it on the server and the client too. maybe this post can help you https://stackoverflow.com/a/50876880/2979191

what language is your server written in? my server is Meteor which already has ping pong logic ...