MCPcopy Create free account
hub / github.com/JoaoLopesF/RemoteDebug / newClient

Method newClient

src/utility/WebSocketsServer.cpp:450–499  ·  view source on GitHub ↗

* handle new client connection * @param client */

Source from the content-addressed store, hash-verified

448 * @param client
449 */
450bool WebSocketsServer::newClient(WEBSOCKETS_NETWORK_CLASS * TCPclient) {
451 WSclient_t * client;
452 // search free list entry for client
453 for(uint8_t i = 0; i < WEBSOCKETS_SERVER_CLIENT_MAX; i++) {
454 client = &_clients[i];
455
456 // state is not connected or tcp connection is lost
457 if(!clientIsConnected(client)) {
458
459 client->tcp = TCPclient;
460
461#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
462 client->isSSL = false;
463 client->tcp->setNoDelay(true);
464#endif
465#if (WEBSOCKETS_NETWORK_TYPE != NETWORK_ESP8266_ASYNC)
466 // set Timeout for readBytesUntil and readStringUntil
467 client->tcp->setTimeout(WEBSOCKETS_TCP_TIMEOUT);
468#endif
469 client->status = WSC_HEADER;
470#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
471 IPAddress ip = client->tcp->remoteIP();
472 DEBUG_WEBSOCKETS("[WS-Server][%d] new client from %d.%d.%d.%d\n", client->num, ip[0], ip[1], ip[2], ip[3]);
473#else
474 DEBUG_WEBSOCKETS("[WS-Server][%d] new client\n", client->num);
475#endif
476
477
478#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC)
479 client->tcp->onDisconnect(std::bind([](WebSocketsServer * server, AsyncTCPbuffer * obj, WSclient_t * client) -> bool {
480 DEBUG_WEBSOCKETS("[WS-Server][%d] Disconnect client\n", client->num);
481
482 AsyncTCPbuffer ** sl = &server->_clients[client->num].tcp;
483 if(*sl == obj) {
484 client->status = WSC_NOT_CONNECTED;
485 *sl = NULL;
486 }
487 return true;
488 }, this, std::placeholders::_1, client));
489
490
491 client->tcp->readStringUntil('\n', &(client->cHttpLine), std::bind(&WebSocketsServer::handleHeader, this, client, &(client->cHttpLine)));
492#endif
493
494 return true;
495 break;
496 }
497 }
498 return false;
499}
500
501/**
502 *

Callers 1

WebSocketsServerMethod · 0.80

Calls 2

remoteIPMethod · 0.80
onDisconnectMethod · 0.80

Tested by

no test coverage detected