From 76853c7a73e3570b059097e9e9d2a27bcef2906d Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Fri, 29 Jan 2016 13:16:02 +0100 Subject: [PATCH] async client working --- src/WebSockets.h | 4 ++-- src/WebSocketsClient.cpp | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/WebSockets.h b/src/WebSockets.h index c203da3..8d4c2db 100644 --- a/src/WebSockets.h +++ b/src/WebSockets.h @@ -54,8 +54,8 @@ // select Network type based #ifdef ESP8266 -//#define WEBSOCKETS_NETWORK_TYPE NETWORK_ESP8266 -#define WEBSOCKETS_NETWORK_TYPE NETWORK_ESP8266_ASYNC +#define WEBSOCKETS_NETWORK_TYPE NETWORK_ESP8266 +//#define WEBSOCKETS_NETWORK_TYPE NETWORK_ESP8266_ASYNC #else #define WEBSOCKETS_NETWORK_TYPE NETWORK_W5100 #endif diff --git a/src/WebSocketsClient.cpp b/src/WebSocketsClient.cpp index af74819..4cc9a35 100644 --- a/src/WebSocketsClient.cpp +++ b/src/WebSocketsClient.cpp @@ -67,8 +67,9 @@ void WebSocketsClient::begin(const char *host, uint16_t port, const char * url) // todo find better seed randomSeed(millis()); #endif - +#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) asyncConnect(); +#endif } void WebSocketsClient::begin(String host, uint16_t port, String url) { @@ -504,7 +505,7 @@ void WebSocketsClient::connectedCb() { client->tcp = NULL; // reconnect - // c->asyncConnect(); + c->asyncConnect(); return true; }, this, std::placeholders::_1, &_client)); @@ -543,18 +544,24 @@ void WebSocketsClient::connectFailedCb() { void WebSocketsClient::asyncConnect() { + DEBUG_WEBSOCKETS("[WS-Client] asyncConnect...\n"); + AsyncClient * tcpclient = new AsyncClient(); - if(!tcpclient) { - DEBUG_WEBSOCKETS("[WS-Client] creating AsyncClient class failed!"); + DEBUG_WEBSOCKETS("[WS-Client] creating AsyncClient class failed!\n"); return; } + tcpclient->onDisconnect([](void *obj, AsyncClient* c) { + c->free(); + delete c; + }); + tcpclient->onConnect(std::bind([](WebSocketsClient * ws , AsyncClient * tcp) { ws->_client.tcp = new AsyncTCPbuffer(tcp); if(!ws->_client.tcp) { - DEBUG_WEBSOCKETS("[WS-Client] creating Network class failed!"); + DEBUG_WEBSOCKETS("[WS-Client] creating Network class failed!\n"); ws->connectFailedCb(); return; }