8000 SocketIO message RX is working · DerialE/arduinoWebSockets@dbca2ab · GitHub
[go: up one dir, main page]

Skip to content

Commit dbca2ab

Browse files
committed
SocketIO message RX is working
1 parent dfa35fa commit dbca2ab

File tree

2 files changed

+34
-7
lines changed

2 files changed

+34
-7
lines changed

src/SocketIOclient.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,20 @@ SocketIOclient::~SocketIOclient() {
1717

1818
void SocketIOclient::begin(const char * host, uint16_t port, const char * url, const char * protocol) {
1919
WebSocketsClient::beginSocketIO(host, port, url, protocol);
20+
WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5);
2021
}
2122

2223
void SocketIOclient::begin(String host, uint16_t port, String url, String protocol) {
2324
WebSocketsClient::beginSocketIO(host, port, url, protocol);
25+
WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5);
26+
}
27+
28+
/**
29+
* set callback function
30+
* @param cbEvent SocketIOclientEvent
31+
*/
32+
void SocketIOclient::onEvent(SocketIOclientEvent cbEvent) {
33+
_cbEvent = cbEvent;
2434
}
2535

2636
bool SocketIOclient::isConnected(void) {
@@ -83,20 +93,23 @@ void SocketIOclient::loop(void) {
8393
unsigned long t = millis();
8494
if((t - _lastConnectionFail) > EIO_HEARTBEAT_INTERVAL) {
8595
_lastConnectionFail = t;
86-
//WebSocketsClient::sendTXT(eIOtype_PING);
96+
DEBUG_WEBSOCKETS("[wsIOc] send ping\n");
97+
WebSocketsClient::sendTXT(eIOtype_PING);
8798
}
8899
}
89100

90-
void SocketIOclient::runCbEvent(WStype_t type, uint8_t * payload, size_t length) {
101+
void SocketIOclient::handleCbEvent(WStype_t type, uint8_t * payload, size_t length) {
91102
switch(type) {
92103
case WStype_DISCONNECTED:
104+
runIOCbEvent(sIOtype_DISCONNECT, NULL, 0);
93105
DEBUG_WEBSOCKETS("[wsIOc] Disconnected!\n");
94106
break;
95107
case WStype_CONNECTED: {
96108
DEBUG_WEBSOCKETS("[wsIOc] Connected to url: %s\n", payload);
97109
// send message to server when Connected
98110
// Engine.io upgrade confirmation message (required)
99111
WebSocketsClient::sendTXT(eIOtype_UPGRADE);
112+
runIOCbEvent(sIOtype_CONNECT, payload, length);
100113
} break;
101114
case WStype_TEXT: {
102115
if(length < 1) {
@@ -136,6 +149,7 @@ void SocketIOclient::runCbEvent(WStype_t type, uint8_t * payload, size_t length)
136149
break;
137150
}
138151

152+
runIOCbEvent(ioType, data, lData);
139153
} break;
140154
case eIOtype_OPEN:
141155
case eIOtype_CLOSE:

src/SocketIOclient.h

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*
1+
/**
22
* SocketIOclient.h
33
*
44
* Created on: May 12, 2018
@@ -10,7 +10,7 @@
1010

1111
#include "WebSockets.h"
1212

13-
#define EIO_HEARTBEAT_INTERVAL 10000
13+
#define EIO_HEARTBEAT_INTERVAL 20000
1414

1515
#define EIO_MAX_HEADER_SIZE (WEBSOCKETS_MAX_HEADER_SIZE + 1)
1616
#define SIO_MAX_HEADER_SIZE (EIO_MAX_HEADER_SIZE + 1)
@@ -38,9 +38,9 @@ typedef enum {
3838
class SocketIOclient : protected WebSocketsClient {
3939
public:
4040
#ifdef __AVR__
41-
typedef void (*SocketIOclientEvent)(WStype_t type, uint8_t * payload, size_t length);
41+
typedef void (*SocketIOclientEvent)(socketIOmessageType_t type, uint8_t * payload, size_t length);
4242
#else
43-
typedef std::function<void(WStype_t type, uint8_t * payload, size_t length)> SocketIOclientEvent;
43+
typedef std::function<void(socketIOmessageType_t type, uint8_t * payload, size_t length)> SocketIOclientEvent;
4444
#endif
4545

4646
SocketIOclient(void);
@@ -51,6 +51,8 @@ class SocketIOclient : protected WebSocketsClient {
5151

5252
bool isConnected(void);
5353

54+
void onEvent(SocketIOclientEvent cbEvent);
55+
5456
bool sendEVENT(uint8_t * payload, size_t length = 0, bool headerToPayload = false);
5557
bool sendEVENT(const uint8_t * payload, size_t length = 0);
5658
bool sendEVENT(char * payload, size_t length = 0, bool headerToPayload = false);
@@ -60,8 +62,19 @@ class SocketIOclient : protected WebSocketsClient {
6062
void loop(void);
6163

6264
protected:
63-
void runCbEvent(WStype_t type, uint8_t * payload, size_t length);
6465
uint64_t _lastHeartbeat = 0;
66+
SocketIOclientEvent _cbEvent;
67+
virtual void runIOCbEvent(socketIOmessageType_t type, uint8_t * payload, size_t length) {
68+
if(_cbEvent) {
69+
_cbEvent(type, payload, length);
70+
}
71+
}
72+
73+
// Handeling events from websocket layer
74+
virtual void runCbEvent(WStype_t type, uint8_t * payload, size_t length) {
75+
handleCbEvent(type, payload, length);
76+
}
77+
void handleCbEvent(WStype_t type, uint8_t * payload, size_t length);
6578
};
6679

6780
#endif /* SOCKETIOCLIENT_H_ */

0 commit comments

Comments
 (0)
0