84 lines
2.5 KiB
C++
84 lines
2.5 KiB
C++
#ifndef WEBSOCKETMANAGER_H
|
|
#define WEBSOCKETMANAGER_H
|
|
|
|
#include <WebSocketsClient.h>
|
|
#include <WiFiClientSecure.h>
|
|
#include <WiFiClient.h>
|
|
#include "ca_cert.h"
|
|
|
|
class WebSocketManager {
|
|
public:
|
|
WebSocketManager(const char* server, uint16_t port, const char* url) {
|
|
serverUrl = server;
|
|
serverPort = port;
|
|
serverPath = url;
|
|
}
|
|
|
|
void begin() {
|
|
xTaskCreate(&WebSocketManager::webSocketTask, "WebSocketTask", 8192, nullptr, 1, nullptr);
|
|
}
|
|
|
|
template<typename... Args>
|
|
void sendText(const char* format, Args... args) {
|
|
if (webSocket.isConnected() && isConnected) {
|
|
char buffer[512]; // Define a buffer to hold the constructed message
|
|
snprintf(buffer, sizeof(buffer), format, args...); // Use snprintf to format the string
|
|
webSocket.sendTXT(buffer);
|
|
}
|
|
}
|
|
|
|
static bool isConnected() {
|
|
return connected;
|
|
}
|
|
|
|
private:
|
|
static void webSocketTask(void *param) {
|
|
WiFiClient client;
|
|
//client.setCACert(ca_cert);
|
|
//webSocket.beginSSL(serverUrl.c_str(), serverPort, serverPath.c_str(), ca_cert);
|
|
webSocket.begin(serverUrl.c_str(), serverPort, serverPath.c_str());
|
|
webSocket.onEvent(webSocketEvent);
|
|
webSocket.setReconnectInterval(1000);
|
|
|
|
for (;;) {
|
|
webSocket.loop();
|
|
vTaskDelay(1 / portTICK_PERIOD_MS);
|
|
}
|
|
}
|
|
|
|
static void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) {
|
|
switch (type) {
|
|
case WStype_DISCONNECTED:
|
|
connected = false;
|
|
Serial.println("[WebSocket] Disconnected");
|
|
break;
|
|
case WStype_CONNECTED:
|
|
connected = true;
|
|
Serial.println("[WebSocket] Connected");
|
|
break;
|
|
case WStype_TEXT:
|
|
Serial.print("[WebSocket] Received: ");
|
|
Serial.println((char*)payload);
|
|
break;
|
|
case WStype_BIN:
|
|
Serial.println("[WebSocket] Received binary data");
|
|
break;
|
|
}
|
|
}
|
|
|
|
static WebSocketsClient webSocket;
|
|
static String serverUrl;
|
|
static uint16_t serverPort;
|
|
static String serverPath;
|
|
static bool connected;
|
|
};
|
|
|
|
// Define static members
|
|
WebSocketsClient WebSocketManager::webSocket;
|
|
String WebSocketManager::serverUrl = "";
|
|
uint16_t WebSocketManager::serverPort = 0;
|
|
String WebSocketManager::serverPath = "";
|
|
bool WebSocketManager::connected = false;
|
|
|
|
#endif // WEBSOCKETMANAGER_H
|