22 #include "../../include/esp3d_config.h"
24 #if defined (HTTP_FEATURE) || defined(WS_DATA_FEATURE)
28 #include <WebSocketsServer.h>
29 #include "../../core/settings_esp3d.h"
30 #include "../../core/esp3doutput.h"
31 #include "../../core/commands.h"
34 #if defined(WS_DATA_FEATURE)
36 #endif //WS_DATA_FEATURE
39 _websocket_server->broadcastTXT(data);
44 if (_websocket_server) {
45 _websocket_server->sendTXT(num, data);
51 if (_websocket_server) {
52 _websocket_server->disconnect();
55 #if defined(WS_DATA_FEATURE)
61 case WStype_DISCONNECTED:
64 case WStype_CONNECTED: {
81 #endif //WS_DATA_FEATURE
82 #if defined (HTTP_FEATURE)
89 case WStype_DISCONNECTED:
92 case WStype_CONNECTED: {
93 String s =
"currentID:" + String(num);
97 s =
"activeID:" + String(num);
115 #endif //HTTP_FEATURE
119 return _RXbufferSize;
127 _websocket_server =
nullptr;
152 _websocket_server =
new WebSocketsServer(_port);
153 if (_websocket_server) {
154 _websocket_server->begin();
155 #if defined (HTTP_FEATURE) //terminal websocket for HTTP
159 #endif //HTTP_FEATURE
160 #if defined (WS_DATA_FEATURE) //terminal websocket for HTTP
161 if((
port != 0) && !_isdebug) {
168 #endif //WS_DATA_FEATURE
186 if (_websocket_server) {
187 _websocket_server->close();
188 delete _websocket_server;
189 _websocket_server =
nullptr;
196 WebSocket_Server::operator bool()
const
203 _current_id = current_id;
218 if((buffer ==
nullptr) ||(!_websocket_server) || (size == 0)) {
221 if (_TXbufferSize==0) {
222 _lastTXflush = millis();
228 if(_websocket_server->connectedClients() == 0) {
232 for (uint i = 0; i < size; i++) {
233 _TXbuffer[_TXbufferSize] = buffer[i];
246 if (!_RXbuffer || !_started) {
249 for (
size_t i = 0; i < len; i++) {
250 _lastRXflush = millis();
252 if (
char(sbuf[i]) ==
'\n') {
254 _RXbuffer[_RXbufferSize] = sbuf[i];
258 }
else if (isPrintable (
char(sbuf[i]) ) ||
char(sbuf[i]) ==
'\r') {
260 _RXbuffer[_RXbufferSize] = sbuf[i];
264 _RXbuffer[_RXbufferSize] = sbuf[i];
269 if (_RXbufferSize > 0) {
273 _RXbuffer[_RXbufferSize] = sbuf[i];
280 void WebSocket_Server::flushRXbuffer()
282 if (!_RXbuffer || !_started) {
287 _RXbuffer[_RXbufferSize] = 0x0;
290 _lastRXflush = millis();
299 if (_TXbufferSize > 0) {
304 if (_RXbufferSize > 0) {
309 if (_websocket_server) {
310 _websocket_server->loop();
321 void WebSocket_Server::flushTXbuffer(
void)
324 if ((_TXbufferSize > 0) && (_websocket_server->connectedClients() > 0 )) {
328 if (_websocket_server) {
329 _websocket_server->broadcastBIN(_TXbuffer,_TXbufferSize);
333 _lastTXflush = millis();
343 #endif // HTTP_FEATURE || WS_DATA_FEATURE