89 lines
2.6 KiB
C++
89 lines
2.6 KiB
C++
|
|
/*
|
||
|
|
* SocketIOclient.cpp
|
||
|
|
*
|
||
|
|
* Created on: May 12, 2018
|
||
|
|
* Author: links
|
||
|
|
*/
|
||
|
|
|
||
|
|
#include "WebSockets.h"
|
||
|
|
#include "WebSocketsClient.h"
|
||
|
|
#include "SocketIOclient.h"
|
||
|
|
|
||
|
|
SocketIOclient::SocketIOclient() {
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
SocketIOclient::~SocketIOclient() {
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void SocketIOclient::begin(const char *host, uint16_t port, const char * url, const char * protocol) {
|
||
|
|
WebSocketsClient::beginSocketIO(host, port, url, protocol);
|
||
|
|
}
|
||
|
|
|
||
|
|
void SocketIOclient::begin(String host, uint16_t port, String url, String protocol) {
|
||
|
|
WebSocketsClient::beginSocketIO(host, port, url, protocol);
|
||
|
|
}
|
||
|
|
|
||
|
|
void SocketIOclient::loop(void) {
|
||
|
|
WebSocketsClient::loop();
|
||
|
|
unsigned long t = millis();
|
||
|
|
if((t - _lastConnectionFail) > EIO_HEARTBEAT_INTERVAL) {
|
||
|
|
_lastConnectionFail = t;
|
||
|
|
sendTXT(eIOtype_PING);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void SocketIOclient::runCbEvent(WStype_t type, uint8_t * payload, size_t length) {
|
||
|
|
switch(type) {
|
||
|
|
case WStype_DISCONNECTED:
|
||
|
|
DEBUG_WEBSOCKETS("[wsIOc] Disconnected!\n");
|
||
|
|
break;
|
||
|
|
case WStype_CONNECTED: {
|
||
|
|
DEBUG_WEBSOCKETS("[wsIOc] Connected to url: %s\n", payload);
|
||
|
|
// send message to server when Connected
|
||
|
|
// socket.io upgrade confirmation message (required)
|
||
|
|
sendTXT(eIOtype_UPGRADE);
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
case WStype_TEXT: {
|
||
|
|
|
||
|
|
if(length < 1) {
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
engineIOmessageType_t eType = (engineIOmessageType_t) payload[0];
|
||
|
|
switch(eType) {
|
||
|
|
case eIOtype_PING:
|
||
|
|
payload[0] = eIOtype_PONG;
|
||
|
|
DEBUG_WEBSOCKETS("[wsIOc] get ping send pong (%s)\n", payload);
|
||
|
|
sendTXT(payload, length);
|
||
|
|
break;
|
||
|
|
case eIOtype_PONG:
|
||
|
|
DEBUG_WEBSOCKETS("[wsIOc] get pong\n");
|
||
|
|
break;
|
||
|
|
case eIOtype_OPEN:
|
||
|
|
case eIOtype_CLOSE:
|
||
|
|
case eIOtype_MESSAGE:
|
||
|
|
case eIOtype_UPGRADE:
|
||
|
|
case eIOtype_NOOP:
|
||
|
|
default:
|
||
|
|
DEBUG_WEBSOCKETS("[wsIOc] Engine.IO Message Type %c (%02X) is not implemented\n", eType, eType);
|
||
|
|
DEBUG_WEBSOCKETS("[wsIOc] get text: %s\n", payload);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
// send message to server
|
||
|
|
// webSocket.sendTXT("message here");
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
case WStype_BIN:
|
||
|
|
DEBUG_WEBSOCKETS("[wsIOc] get binary length: %u\n", length);
|
||
|
|
// hexdump(payload, length);
|
||
|
|
|
||
|
|
// send data to server
|
||
|
|
// webSocket.sendBIN(payload, length);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|