GyverLibs / FastBot

Многофункциональная быстрая библиотека для Телеграм бота на esp8266/esp32
MIT License
186 stars 31 forks source link

А можно поддержать longpolling? #75

Closed vvzvlad closed 17 hours ago

vvzvlad commented 17 hours ago

Насколько я понял, надо просто установить большой таймаут для запроса (секунд 30), и тогда сервер тг будет держать соединение до того момента, пока боту не придет сообщение, т.е. не будет лага между приходом сообщения и очередным опросом сервера.

Кажется, что достаточно этого:

    uint8_t tickManual() {
        if (!*_callback) return 7;
        String req;
        req.reserve(120);
        _addToken(req);
        req += F("/getUpdates?limit=");
        req += ovfFlag ? 1 : _limit;  // берём по 1 сообщению если переполнен
+      req += F("&timeout=30"); // Установите timeout в 30 секунд
        req += F("&offset=");
        req += ID;
GyverLibs commented 17 hours ago

long polling это асинхронная фича и средствами стандартного http client её сделать нельзя. В новой библиотеке FastBot2 реализован такой режим

vvzvlad commented 17 hours ago

long polling это асинхронная фича и средствами стандартного http client её сделать нельзя. В новой библиотеке FastBot2 реализован такой режим

А почему нельзя? будет блокировать работу?

GyverLibs commented 17 hours ago

потому что клиент будет дожидаться ответа сервера, а сервер ничего ему не ответит