Skip to content

esp32 keeps connecting and disconnecting #546

Closed
@Jorge1701

Description

@Jorge1701

Hi, I'm using esp32 and the example in examples/esp32/WebSocketClient/WebSocketClient.ino
With a node js server and socket.io

It keeps connecting and disconnecting I don't know what I'm doing wrong

/*
 * WebSocketClient.ino
 *
 *  Created on: 24.05.2015
 *
 */

#include <Arduino.h>

#include <WiFi.h>
#include <WiFiMulti.h>
#include <WiFiClientSecure.h>

#include <WebSocketsClient.h>


WiFiMulti WiFiMulti;
WebSocketsClient webSocket;

#define USE_SERIAL Serial

void hexdump(const void *mem, uint32_t len, uint8_t cols = 16) {
  const uint8_t* src = (const uint8_t*) mem;
  USE_SERIAL.printf("\n[HEXDUMP] Address: 0x%08X len: 0x%X (%d)", (ptrdiff_t)src, len, len);
  for(uint32_t i = 0; i < len; i++) {
    if(i % cols == 0) {
      USE_SERIAL.printf("\n[0x%08X] 0x%08X: ", (ptrdiff_t)src, i);
    }
    USE_SERIAL.printf("%02X ", *src);
    src++;
  }
  USE_SERIAL.printf("\n");
}

void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) {

  switch(type) {
    case WStype_DISCONNECTED:
      USE_SERIAL.printf("[WSc] Disconnected!\n");
      break;
    case WStype_CONNECTED:
      USE_SERIAL.printf("[WSc] Connected to url: %s\n", payload);

      // send message to server when Connected
      webSocket.sendTXT("Connected");
      break;
    case WStype_TEXT:
      USE_SERIAL.printf("[WSc] get text: %s\n", payload);

      // send message to server
      // webSocket.sendTXT("message here");
      break;
    case WStype_BIN:
      USE_SERIAL.printf("[WSc] get binary length: %u\n", length);
      hexdump(payload, length);

      // send data to server
      // webSocket.sendBIN(payload, length);
      break;
    case WStype_ERROR:      
    case WStype_FRAGMENT_TEXT_START:
    case WStype_FRAGMENT_BIN_START:
    case WStype_FRAGMENT:
    case WStype_FRAGMENT_FIN:
      break;
  }

}

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

  //Serial.setDebugOutput(true);
  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("Innova", "0daf80daf8");

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

  // server address, port and URL
  webSocket.beginSocketIO("192.168.150.243", 3000);

  // event handler
  webSocket.onEvent(webSocketEvent);

  // try ever 5000 again if connection has failed
  webSocket.setReconnectInterval(5000);

}

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

Node.js server:

const app = require( 'express' )();
const http = require( 'http' ).createServer( app );
const io = require( 'socket.io' )( http );

io.on( 'connection', ( socket ) => {
	console.log( 'connection' );

	socket.on( 'disconnect', () => {
		console.log( 'disconnect' );
	} );
} );

http.listen( 3000, () => {
	console.log( 'Listening on port 3000.' );
} );

If I begin the webSocket with begin or beginSSL it just keeps printing [WSc] Disconnected! on the console.

When I try with webSocket.beginSocketIO("192.168.150.243", 3000); then it connects but keeps disconnecting and shows this

[SETUP] BOOT WAIT 4...
[SETUP] BOOT WAIT 3...
[SETUP] BOOT WAIT 2...
[SETUP] BOOT WAIT 1...
[WSc] Connected to url: /socket.io/?EIO=3
[WSc] Disconnected!
[WSc] Connected to url: /socket.io/?EIO=3
[WSc] Disconnected!
[WSc] Connected to url: /socket.io/?EIO=3
[WSc] Disconnected!
[WSc] Connected to url: /socket.io/?EIO=3
[WSc] Disconnected!
[WSc] Connected to url: /socket.io/?EIO=3
[WSc] Disconnected!

the logs on the server show this, only with beginSocketIO

connection
connection
connection
connection
connection

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