a WebSocket Server and Client for Arduino based on RFC6455.
- text frame
 - binary frame
 - connection close
 - ping
 - pong
 - continuation frame
 
- max input length is limited to the ram size and the 
WEBSOCKETS_MAX_DATA_SIZEdefine - max output length has no limit (the hardware is the limit)
 - Client send big frames with mask 0x00000000 (on AVR all frames)
 - continuation frame reassembly need to be handled in the application code
 
- Functions called from within the context of the websocket event might not honor 
yield()and/ordelay(). See this issue for more info and a potential workaround. - wss / SSL is not possible.
 
- ESP8266 Arduino for ESP8266
 - ESP32 Arduino for ESP32
 - ESP31B
 - Particle with STM32 ARM Cortex M3
 - ATmega328 with Ethernet Shield (ATmega branch)
 - ATmega328 with enc28j60 (ATmega branch)
 - ATmega2560 with Ethernet Shield (ATmega branch)
 - ATmega2560 with enc28j60 (ATmega branch)
 
version 2.0 and up is not compatible with AVR/ATmega, check ATmega branch.
Arduino for AVR not supports std namespace of c++.
supported for:
- wss client on the ESP8266
 - wss / SSL is not natively supported in WebSocketsServer however it is possible to achieve secure websockets by running the device behind an SSL proxy. See Nginx for a sample Nginx server configuration file to enable this.
 
This libary can run in Async TCP mode on the ESP.
The mode can be activated in the WebSockets.h (see WEBSOCKETS_NETWORK_TYPE define).
ESPAsyncTCP libary is required.
begin: Initiate connection sequence to the websocket host.
void begin(const char *host, uint16_t port, const char * url = "/", const char * protocol = "arduino"); void begin(String host, uint16_t port, String url = "/", String protocol = "arduino"); onEvent: Callback to handle for websocket events
void onEvent(WebSocketClientEvent cbEvent); WebSocketClientEvent: Handler for websocket events
void (*WebSocketClientEvent)(WStype_t type, uint8_t * payload, size_t length) Where WStype_t type is defined as:
typedef enum { WStype_ERROR, WStype_DISCONNECTED, WStype_CONNECTED, WStype_TEXT, WStype_BIN,	WStype_FRAGMENT_TEXT_START,	WStype_FRAGMENT_BIN_START,	WStype_FRAGMENT,	WStype_FRAGMENT_FIN, } WStype_t; Submit issues to: https://github.com/Links2004/arduinoWebSockets/issues
The library is licensed under LGPLv2.1
libb64 written by Chris Venter. It is distributed under Public Domain see LICENSE.