11#include " StreamlabsAPI.h"
2- #include < ArduinoJson.h>
32
43
54void 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
1816void 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}
0 commit comments