mirror of
https://github.com/Links2004/arduinoWebSockets.git
synced 2025-07-15 16:30:31 +02:00
SocketIO message RX is working
This commit is contained in:
@ -17,10 +17,20 @@ SocketIOclient::~SocketIOclient() {
|
|||||||
|
|
||||||
void SocketIOclient::begin(const char * host, uint16_t port, const char * url, const char * protocol) {
|
void SocketIOclient::begin(const char * host, uint16_t port, const char * url, const char * protocol) {
|
||||||
WebSocketsClient::beginSocketIO(host, port, url, protocol);
|
WebSocketsClient::beginSocketIO(host, port, url, protocol);
|
||||||
|
WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SocketIOclient::begin(String host, uint16_t port, String url, String protocol) {
|
void SocketIOclient::begin(String host, uint16_t port, String url, String protocol) {
|
||||||
WebSocketsClient::beginSocketIO(host, port, url, protocol);
|
WebSocketsClient::beginSocketIO(host, port, url, protocol);
|
||||||
|
WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set callback function
|
||||||
|
* @param cbEvent SocketIOclientEvent
|
||||||
|
*/
|
||||||
|
void SocketIOclient::onEvent(SocketIOclientEvent cbEvent) {
|
||||||
|
_cbEvent = cbEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SocketIOclient::isConnected(void) {
|
bool SocketIOclient::isConnected(void) {
|
||||||
@ -83,13 +93,15 @@ void SocketIOclient::loop(void) {
|
|||||||
unsigned long t = millis();
|
unsigned long t = millis();
|
||||||
if((t - _lastConnectionFail) > EIO_HEARTBEAT_INTERVAL) {
|
if((t - _lastConnectionFail) > EIO_HEARTBEAT_INTERVAL) {
|
||||||
_lastConnectionFail = t;
|
_lastConnectionFail = t;
|
||||||
//WebSocketsClient::sendTXT(eIOtype_PING);
|
DEBUG_WEBSOCKETS("[wsIOc] send ping\n");
|
||||||
|
WebSocketsClient::sendTXT(eIOtype_PING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SocketIOclient::runCbEvent(WStype_t type, uint8_t * payload, size_t length) {
|
void SocketIOclient::handleCbEvent(WStype_t type, uint8_t * payload, size_t length) {
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case WStype_DISCONNECTED:
|
case WStype_DISCONNECTED:
|
||||||
|
runIOCbEvent(sIOtype_DISCONNECT, NULL, 0);
|
||||||
DEBUG_WEBSOCKETS("[wsIOc] Disconnected!\n");
|
DEBUG_WEBSOCKETS("[wsIOc] Disconnected!\n");
|
||||||
break;
|
break;
|
||||||
case WStype_CONNECTED: {
|
case WStype_CONNECTED: {
|
||||||
@ -97,6 +109,7 @@ void SocketIOclient::runCbEvent(WStype_t type, uint8_t * payload, size_t length)
|
|||||||
// send message to server when Connected
|
// send message to server when Connected
|
||||||
// Engine.io upgrade confirmation message (required)
|
// Engine.io upgrade confirmation message (required)
|
||||||
WebSocketsClient::sendTXT(eIOtype_UPGRADE);
|
WebSocketsClient::sendTXT(eIOtype_UPGRADE);
|
||||||
|
runIOCbEvent(sIOtype_CONNECT, payload, length);
|
||||||
} break;
|
} break;
|
||||||
case WStype_TEXT: {
|
case WStype_TEXT: {
|
||||||
if(length < 1) {
|
if(length < 1) {
|
||||||
@ -136,6 +149,7 @@ void SocketIOclient::runCbEvent(WStype_t type, uint8_t * payload, size_t length)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
runIOCbEvent(ioType, data, lData);
|
||||||
} break;
|
} break;
|
||||||
case eIOtype_OPEN:
|
case eIOtype_OPEN:
|
||||||
case eIOtype_CLOSE:
|
case eIOtype_CLOSE:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/*
|
/**
|
||||||
* SocketIOclient.h
|
* SocketIOclient.h
|
||||||
*
|
*
|
||||||
* Created on: May 12, 2018
|
* Created on: May 12, 2018
|
||||||
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include "WebSockets.h"
|
#include "WebSockets.h"
|
||||||
|
|
||||||
#define EIO_HEARTBEAT_INTERVAL 10000
|
#define EIO_HEARTBEAT_INTERVAL 20000
|
||||||
|
|
||||||
#define EIO_MAX_HEADER_SIZE (WEBSOCKETS_MAX_HEADER_SIZE + 1)
|
#define EIO_MAX_HEADER_SIZE (WEBSOCKETS_MAX_HEADER_SIZE + 1)
|
||||||
#define SIO_MAX_HEADER_SIZE (EIO_MAX_HEADER_SIZE + 1)
|
#define SIO_MAX_HEADER_SIZE (EIO_MAX_HEADER_SIZE + 1)
|
||||||
@ -38,9 +38,9 @@ typedef enum {
|
|||||||
class SocketIOclient : protected WebSocketsClient {
|
class SocketIOclient : protected WebSocketsClient {
|
||||||
public:
|
public:
|
||||||
#ifdef __AVR__
|
#ifdef __AVR__
|
||||||
typedef void (*SocketIOclientEvent)(WStype_t type, uint8_t * payload, size_t length);
|
typedef void (*SocketIOclientEvent)(socketIOmessageType_t type, uint8_t * payload, size_t length);
|
||||||
#else
|
#else
|
||||||
typedef std::function<void(WStype_t type, uint8_t * payload, size_t length)> SocketIOclientEvent;
|
typedef std::function<void(socketIOmessageType_t type, uint8_t * payload, size_t length)> SocketIOclientEvent;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SocketIOclient(void);
|
SocketIOclient(void);
|
||||||
@ -51,6 +51,8 @@ class SocketIOclient : protected WebSocketsClient {
|
|||||||
|
|
||||||
bool isConnected(void);
|
bool isConnected(void);
|
||||||
|
|
||||||
|
void onEvent(SocketIOclientEvent cbEvent);
|
||||||
|
|
||||||
bool sendEVENT(uint8_t * payload, size_t length = 0, bool headerToPayload = false);
|
bool sendEVENT(uint8_t * payload, size_t length = 0, bool headerToPayload = false);
|
||||||
bool sendEVENT(const uint8_t * payload, size_t length = 0);
|
bool sendEVENT(const uint8_t * payload, size_t length = 0);
|
||||||
bool sendEVENT(char * payload, size_t length = 0, bool headerToPayload = false);
|
bool sendEVENT(char * payload, size_t length = 0, bool headerToPayload = false);
|
||||||
@ -60,8 +62,19 @@ class SocketIOclient : protected WebSocketsClient {
|
|||||||
void loop(void);
|
void loop(void);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void runCbEvent(WStype_t type, uint8_t * payload, size_t length);
|
|
||||||
uint64_t _lastHeartbeat = 0;
|
uint64_t _lastHeartbeat = 0;
|
||||||
|
SocketIOclientEvent _cbEvent;
|
||||||
|
virtual void runIOCbEvent(socketIOmessageType_t type, uint8_t * payload, size_t length) {
|
||||||
|
if(_cbEvent) {
|
||||||
|
_cbEvent(type, payload, length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handeling events from websocket layer
|
||||||
|
virtual void runCbEvent(WStype_t type, uint8_t * payload, size_t length) {
|
||||||
|
handleCbEvent(type, payload, length);
|
||||||
|
}
|
||||||
|
void handleCbEvent(WStype_t type, uint8_t * payload, size_t length);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SOCKETIOCLIENT_H_ */
|
#endif /* SOCKETIOCLIENT_H_ */
|
||||||
|
Reference in New Issue
Block a user