перенос библиотеки сокетов в тело проекта

This commit is contained in:
Dmitry Borisenko
2022-10-07 18:30:51 +02:00
parent 7c4f983e51
commit dfa060895e
62 changed files with 8573 additions and 12 deletions

View File

@@ -220,6 +220,10 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
generateOrder(key, value);
SerialPrint("i", F("=>WS"), "Msg from svelte web, WS No: " + String(num) + ", msg: " + msg);
}
if (headerStr == "/test|") {
//sendBlobToWsStrHeader("/layout.json", "header", num, 1024);
}
} break;
case WStype_BIN: {
@@ -396,6 +400,44 @@ void publishChartToWs(String filename, int num, size_t frameSize, int maxCount,
}
}
// 6 4
// layout|0120|{status:12}|...from file...
// layout|0000|...from file...
// layout|0000|...from file...
void sendBlobToWsStrHeader(const String& filename, const String& header, uint8_t client_id, size_t frameSize) {
// откроем файл
auto path = filepath(filename);
auto file = FileFS.open(path, "r");
if (!file) {
SerialPrint("E", "FS", F("reed file error"));
return;
}
size_t totalSize = file.size();
SerialPrint("I", "FS", "Send file '" + String(filename) + "', file size: " + String(totalSize));
// размер заголовка
auto headerSize = header.length();
// выделим буфер размером с фрейм
auto frameBuf = new uint8_t[frameSize];
// заголовок у нас не меняется, запием его в начало буфера
header.toCharArray((char*)frameBuf, frameSize);
// указатель на начало полезной нагрузки
auto payloadBuf = &frameBuf[headerSize];
// и сколько осталось места для нее
auto maxPayloadSize = frameSize - headerSize;
while (file.available()) {
// прочитаем кусок в буфер
size_t payloadSize = file.read(payloadBuf, maxPayloadSize);
if (payloadSize) {
// отправим фрейм
standWebSocket.sendBIN(client_id, frameBuf, headerSize + payloadSize, true);
}
}
}
// void sendMark(const char* filename, const char* mark, uint8_t num) {
// char outChar[strlen(filename) + strlen(mark) + 1];
// strcpy(outChar, mark);