Skip to content

Commit 80c4e17

Browse files
committed
Replaced socketIO library
1 parent c9e7498 commit 80c4e17

2 files changed

Lines changed: 35 additions & 24 deletions

File tree

src/StreamlabsAPI.cpp

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
#include "StreamlabsAPI.h"
2-
#include <ArduinoJson.h>
32

43

54
void StreamlabsAPI::loop() {
65
webSocket.loop();
76
}
87

9-
bool StreamlabsAPI::connect(const char* socketToken) {
10-
webSocket.on("event", std::bind(&StreamlabsAPI::event, this, std::placeholders::_1, std::placeholders::_2));
11-
8+
void StreamlabsAPI::connect(const char* socketToken) {
9+
webSocket.onEvent(std::bind(&StreamlabsAPI::event, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
1210
String queryParams = SL_DEFAULT_QUERYPARAMETES;
13-
queryParams += "&token=";
14-
queryParams += socketToken;
15-
webSocket.beginSSL(SL_HOSTNAME, SL_PORT, queryParams.c_str(), SL_FINGERPRINT);
11+
queryParams.concat("token=");
12+
queryParams.concat(socketToken);
13+
webSocket.beginSSL(SL_HOSTNAME, SL_PORT, queryParams.c_str());
1614
}
1715

1816
void StreamlabsAPI::followTwitchEvent(std::function<void (const char * payload)> func) {
@@ -39,18 +37,22 @@ void StreamlabsAPI::donationEvent(std::function<void (const char * payload)> fun
3937
events["donation"] = func;
4038
}
4139

42-
StaticJsonDocument<10000> doc;
43-
void StreamlabsAPI::event(const char * payload, size_t length) {
44-
// FIXME remove deserialized and parse string to get the type
45-
DeserializationError error = deserializeJson(doc, payload);
46-
if (error) {
47-
Serial.print("deserializeJson() failed: ");
48-
return;
49-
}
40+
void StreamlabsAPI::event(socketIOmessageType_t type, uint8_t * payload, size_t length) {
41+
const char* data = reinterpret_cast<char*>(payload);
42+
DEBUG_STREAMLABS_ALERTS("------STREAMLABS EVENT------\n");
43+
DEBUG_STREAMLABS_ALERTS("SocketIO message type: %d\n", type);
44+
DEBUG_STREAMLABS_ALERTS("SocketIO data: %s\n", data);
45+
46+
String payloadS = String((char *) payload);
47+
int startOfType = payloadS.indexOf("\"type\":\"");
48+
int endOfType = payloadS.indexOf("\"", startOfType + 8);
49+
String typeS = payloadS.substring(startOfType + 8, endOfType);
50+
51+
DEBUG_STREAMLABS_ALERTS("Streamlabs event type: %s\n", typeS.c_str());
52+
DEBUG_STREAMLABS_ALERTS("-----------------------------\n");
5053

51-
const char* type = doc["type"];
52-
auto e = events.find(type);
54+
auto e = events.find(typeS);
5355
if(e != events.end()) {
54-
e->second(payload);
56+
e->second(data);
5557
}
5658
}

src/StreamlabsAPI.h

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,33 @@
11
#include <Arduino.h>
22
#include <map>
3-
#include <SocketIoClient.h>
3+
#include <SocketIOclient.h>
4+
5+
#if defined(DEBUG_ESP_PORT) || defined(DEBUG_STREAMLABS)
6+
#define DEBUG_STREAMLABS_ALERTS(...) \
7+
{ \
8+
DEBUG_ESP_PORT.printf(__VA_ARGS__); \
9+
DEBUG_ESP_PORT.flush(); \
10+
}
11+
#else
12+
#define DEBUG_STREAMLABS_ALERTS(...)
13+
#endif
414

515
#define SL_HOSTNAME "sockets.streamlabs.com"
616
#define SL_PORT 443
7-
#define SL_DEFAULT_QUERYPARAMETES "/socket.io/?transport=websocket"
8-
#define SL_FINGERPRINT "E7 93 77 36 DA D4 15 0F C1 C1 8F 14 D5 2A C8 72 93 D0 6F 2A"
17+
#define SL_DEFAULT_QUERYPARAMETES "/socket.io/?"
918

1019

1120
#ifndef STREAMLABSAPI_H_
1221
#define STREAMLABSAPI_H_
1322

1423
class StreamlabsAPI {
1524
private:
16-
SocketIoClient webSocket;
25+
SocketIOclient webSocket;
1726
std::map<String, std::function<void (const char * payload)>> events;
18-
void event(const char * payload, size_t length);
27+
void event(socketIOmessageType_t type, uint8_t * payload, size_t length);
1928
public:
2029
void loop();
21-
bool connect(const char* socketToken);
30+
void connect(const char* socketToken);
2231
void followTwitchEvent(std::function<void (const char * payload)> func);
2332
void subscriptionsTwitchEvent(std::function<void (const char * payload)> func);
2433
void hostTwitchEvent(std::function<void (const char * payload)> func);

0 commit comments

Comments
 (0)