2017-07-20 18:47:36 +02:00
WebSocket Server and Client for Arduino [](https://travis-ci.org/Links2004/arduinoWebSockets)
2015-05-24 16:02:22 +02:00
===========================================
2015-05-24 00:18:52 +02:00
2015-05-24 16:02:22 +02:00
a WebSocket Server and Client for Arduino based on RFC6455.
2017-02-22 14:29:26 +01:00
2015-05-24 16:02:22 +02:00
##### Supported features of RFC6455 #####
- text frame
- binary frame
- connection close
- ping
- pong
- continuation frame
2017-02-22 14:29:26 +01:00
2015-05-24 16:02:22 +02:00
##### Limitations #####
- max input length is limited to the ram size and the ```WEBSOCKETS_MAX_DATA_SIZE` `` define
- max output length has no limit (the hardware is the limit)
2015-12-28 03:25:01 +01:00
- Client send big frames with mask 0x00000000 (on AVR all frames)
2017-02-22 14:29:26 +01:00
- continuation frame reassembly need to be handled in the application code
2016-03-16 16:25:31 +01:00
##### Limitations for Async #####
- Functions called from within the context of the websocket event might not honor `yield()` and/or `delay()` . See [this issue ](https://github.com/Links2004/arduinoWebSockets/issues/58#issuecomment-192376395 ) for more info and a potential workaround.
- wss / SSL is not possible.
2017-02-22 14:29:26 +01:00
2015-05-24 16:02:22 +02:00
##### Supported Hardware #####
- ESP8266 [Arduino for ESP8266 ](https://github.com/Links2004/Arduino )
2016-01-30 12:02:09 +01:00
- ESP31B
2017-02-22 14:29:26 +01:00
- 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)
2017-03-06 19:16:26 +01:00
###### Note: ######
version 2.0 and up is not compatible with AVR/ATmega, check ATmega branch.
Arduino for AVR not supports std namespace of c++.
### wss / SSL ###
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 ](examples/Nginx/esp8266.ssl.reverse.proxy.conf ) for a
sample Nginx server configuration file to enable this.
### ESP Async TCP ###
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 ](https://github.com/me-no-dev/ESPAsyncTCP ) libary is required.
### High Level Client API ###
2017-03-06 11:03:43 -05:00
- `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;
```
2015-05-24 16:02:22 +02:00
### Issues ###
Submit issues to: https://github.com/Links2004/arduinoWebSockets/issues
2015-11-27 00:44:52 +01:00
[](https://gitter.im/Links2004/arduinoWebSockets?utm_source=badge& utm_medium=badge& utm_campaign=pr-badge& utm_content=badge)
2015-05-24 16:02:22 +02:00
### License and credits ###
The library is licensed under [LGPLv2.1 ](https://github.com/Links2004/arduinoWebSockets/blob/master/LICENSE )
[libb64 ](http://libb64.sourceforge.net/ ) written by Chris Venter. It is distributed under Public Domain see [LICENSE ](https://github.com/Links2004/arduinoWebSockets/blob/master/src/libb64/LICENSE ).