mirror of
https://github.com/Links2004/arduinoWebSockets.git
synced 2025-07-23 20:37:14 +02:00
Merge pull request #566 from simap/master
avoid flush on esp32, add/fix debugs, longer yield when waiting for data
This commit is contained in:
@ -501,7 +501,7 @@ void WebSockets::handleWebsocketPayloadCb(WSclient_t * client, bool ok, uint8_t
|
|||||||
reasonCode = payload[0] << 8 | payload[1];
|
reasonCode = payload[0] << 8 | payload[1];
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] get ask for close. Code: %d", client->num, reasonCode);
|
DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] get ask for close. Code: %d\n", client->num, reasonCode);
|
||||||
if(header->payloadLen > 2) {
|
if(header->payloadLen > 2) {
|
||||||
DEBUG_WEBSOCKETS(" (%s)\n", (payload + 2));
|
DEBUG_WEBSOCKETS(" (%s)\n", (payload + 2));
|
||||||
} else {
|
} else {
|
||||||
@ -510,6 +510,7 @@ void WebSockets::handleWebsocketPayloadCb(WSclient_t * client, bool ok, uint8_t
|
|||||||
clientDisconnect(client, 1000);
|
clientDisconnect(client, 1000);
|
||||||
} break;
|
} break;
|
||||||
default:
|
default:
|
||||||
|
DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] got unknown opcode: %d\n", client->num, header->opCode);
|
||||||
clientDisconnect(client, 1002);
|
clientDisconnect(client, 1002);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -630,7 +631,7 @@ bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWait
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(!client->tcp->available()) {
|
if(!client->tcp->available()) {
|
||||||
WEBSOCKETS_YIELD();
|
WEBSOCKETS_YIELD_MORE();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -643,7 +644,9 @@ bool WebSockets::readCb(WSclient_t * client, uint8_t * out, size_t n, WSreadWait
|
|||||||
} else {
|
} else {
|
||||||
//DEBUG_WEBSOCKETS("Receive %d left %d!\n", len, n);
|
//DEBUG_WEBSOCKETS("Receive %d left %d!\n", len, n);
|
||||||
}
|
}
|
||||||
WEBSOCKETS_YIELD();
|
if (n > 0) {
|
||||||
|
WEBSOCKETS_YIELD();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(cb) {
|
if(cb) {
|
||||||
cb(client, true);
|
cb(client, true);
|
||||||
@ -693,9 +696,11 @@ size_t WebSockets::write(WSclient_t * client, uint8_t * out, size_t n) {
|
|||||||
total += len;
|
total += len;
|
||||||
//DEBUG_WEBSOCKETS("write %d left %d!\n", len, n);
|
//DEBUG_WEBSOCKETS("write %d left %d!\n", len, n);
|
||||||
} else {
|
} else {
|
||||||
//DEBUG_WEBSOCKETS("write %d failed left %d!\n", len, n);
|
DEBUG_WEBSOCKETS("WS write %d failed left %d!\n", len, n);
|
||||||
|
}
|
||||||
|
if (n > 0) {
|
||||||
|
WEBSOCKETS_YIELD();
|
||||||
}
|
}
|
||||||
WEBSOCKETS_YIELD();
|
|
||||||
}
|
}
|
||||||
WEBSOCKETS_YIELD();
|
WEBSOCKETS_YIELD();
|
||||||
return total;
|
return total;
|
||||||
|
@ -65,8 +65,10 @@
|
|||||||
|
|
||||||
#if defined(ESP8266)
|
#if defined(ESP8266)
|
||||||
#define WEBSOCKETS_YIELD() delay(0)
|
#define WEBSOCKETS_YIELD() delay(0)
|
||||||
|
#define WEBSOCKETS_YIELD_MORE() delay(1)
|
||||||
#elif defined(ESP32)
|
#elif defined(ESP32)
|
||||||
#define WEBSOCKETS_YIELD() yield()
|
#define WEBSOCKETS_YIELD() yield()
|
||||||
|
#define WEBSOCKETS_YIELD_MORE() delay(1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#elif defined(STM32_DEVICE)
|
#elif defined(STM32_DEVICE)
|
||||||
@ -75,7 +77,7 @@
|
|||||||
#define WEBSOCKETS_USE_BIG_MEM
|
#define WEBSOCKETS_USE_BIG_MEM
|
||||||
#define GET_FREE_HEAP System.freeMemory()
|
#define GET_FREE_HEAP System.freeMemory()
|
||||||
#define WEBSOCKETS_YIELD()
|
#define WEBSOCKETS_YIELD()
|
||||||
|
#define WEBSOCKETS_YIELD_MORE()
|
||||||
#else
|
#else
|
||||||
|
|
||||||
//atmega328p has only 2KB ram!
|
//atmega328p has only 2KB ram!
|
||||||
@ -83,7 +85,7 @@
|
|||||||
// moves all Header strings to Flash
|
// moves all Header strings to Flash
|
||||||
#define WEBSOCKETS_SAVE_RAM
|
#define WEBSOCKETS_SAVE_RAM
|
||||||
#define WEBSOCKETS_YIELD()
|
#define WEBSOCKETS_YIELD()
|
||||||
|
#define WEBSOCKETS_YIELD_MORE()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define WEBSOCKETS_TCP_TIMEOUT (5000)
|
#define WEBSOCKETS_TCP_TIMEOUT (5000)
|
||||||
|
@ -567,7 +567,7 @@ void WebSocketsServer::clientDisconnect(WSclient_t * client) {
|
|||||||
|
|
||||||
if(client->tcp) {
|
if(client->tcp) {
|
||||||
if(client->tcp->connected()) {
|
if(client->tcp->connected()) {
|
||||||
#if(WEBSOCKETS_NETWORK_TYPE != NETWORK_ESP8266_ASYNC)
|
#if(WEBSOCKETS_NETWORK_TYPE != NETWORK_ESP8266_ASYNC) && (WEBSOCKETS_NETWORK_TYPE != NETWORK_ESP32)
|
||||||
client->tcp->flush();
|
client->tcp->flush();
|
||||||
#endif
|
#endif
|
||||||
client->tcp->stop();
|
client->tcp->stop();
|
||||||
@ -694,6 +694,7 @@ void WebSocketsServer::handleClientData(void) {
|
|||||||
WebSockets::handleWebsocket(client);
|
WebSockets::handleWebsocket(client);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
DEBUG_WEBSOCKETS("[WS-Server][%d][handleClientData] unknown client status %d\n", client->num, client->status);
|
||||||
WebSockets::clientDisconnect(client, 1002);
|
WebSockets::clientDisconnect(client, 1002);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user