Skip to content

Commit 0ca1503

Browse files
committed
add disconnect functions
void disconnect(void); void disconnect(uint8_t num);
1 parent 27a9a22 commit 0ca1503

File tree

3 files changed

+36
-6
lines changed

3 files changed

+36
-6
lines changed

src/WebSockets.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
#endif
3838
#endif
3939

40-
//#define DEBUG_WEBSOCKETS(...) Serial1.printf( __VA_ARGS__ );
40+
#define DEBUG_WEBSOCKETS(...) Serial1.printf( __VA_ARGS__ );
4141

4242
#ifndef DEBUG_WEBSOCKETS
4343
#define DEBUG_WEBSOCKETS(...)

src/WebSocketsServer.cpp

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,12 @@ void WebSocketsServer::begin(void) {
6363
_server->begin();
6464
}
6565

66+
/**
67+
* called in arduino loop
68+
*/
6669
void WebSocketsServer::loop(void) {
67-
6870
handleNewClients();
69-
7071
handleClientData();
71-
7272
}
7373

7474
/**
@@ -183,10 +183,37 @@ void WebSocketsServer::broadcastBIN(uint8_t * payload, size_t length) {
183183
}
184184
}
185185

186-
void WebSocketsServer::broadcastBIN(const uint8_t * payload, size_t length) {
186+
void WebSocketsServer::broadcastBIN(const uint8_t * payload, size_t length) {
187187
broadcastBIN((uint8_t *) payload, length);
188188
}
189189

190+
/**
191+
* disconnect all clients
192+
*/
193+
void WebSocketsServer::disconnect(void) {
194+
WSclient_t * client;
195+
for(uint8_t i = 0; i < WEBSOCKETS_SERVER_CLIENT_MAX; i++) {
196+
client = &_clients[i];
197+
if(clientIsConnected(client)) {
198+
WebSockets::clientDisconnect(client, 1000);
199+
}
200+
}
201+
}
202+
203+
/**
204+
* disconnect one client
205+
* @param num
206+
*/
207+
void WebSocketsServer::disconnect(uint8_t num) {
208+
if(num >= WEBSOCKETS_SERVER_CLIENT_MAX) {
209+
return;
210+
}
211+
WSclient_t * client = &_clients[num];
212+
if(clientIsConnected(client)) {
213+
WebSockets::clientDisconnect(client, 1000);
214+
}
215+
}
216+
190217
//#################################################################################
191218
//#################################################################################
192219
//#################################################################################
@@ -422,7 +449,7 @@ void WebSocketsServer::handleHeader(WSclient_t * client) {
422449
WebSockets::sendFrame(client, WSop_ping);
423450

424451
if(_cbEvent) {
425-
_cbEvent(client->num, WStype_CONNECTED, (uint8_t *)client->cUrl.c_str(), client->cUrl.length());
452+
_cbEvent(client->num, WStype_CONNECTED, (uint8_t *) client->cUrl.c_str(), client->cUrl.length());
426453
}
427454

428455
} else {

src/WebSocketsServer.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ class WebSocketsServer: private WebSockets {
8383
void broadcastBIN(uint8_t * payload, size_t length);
8484
void broadcastBIN(const uint8_t * payload, size_t length);
8585

86+
void disconnect(void);
87+
void disconnect(uint8_t num);
88+
8689
private:
8790
uint16_t _port;
8891

0 commit comments

Comments
 (0)