
Magic
13.02.2018
09:51:44

Maxim
13.02.2018
09:51:51
С вебхуками ты открываешь соединение на получение и всё. Телега берёт на себя все расходы на доставку.

Maxim
13.02.2018
09:52:33

Magic
13.02.2018
09:52:41

Google

Maxim
13.02.2018
09:52:51

Maxim
13.02.2018
09:53:08

Maxim
13.02.2018
09:53:23

Maxim
13.02.2018
09:53:30
ты открываешь целый ссл порт, к твоему сведению

Magic
13.02.2018
09:53:44

Maxim
13.02.2018
09:53:51

Maxim
13.02.2018
09:54:04
этом?
электроны в проводах?

Maxim
13.02.2018
09:54:19

Magic
13.02.2018
09:54:27
И что?
Я отправляю запрос и жду получения

Maxim
13.02.2018
09:54:44

Google

Maxim
13.02.2018
09:55:09

Maxim
13.02.2018
09:55:16
какой, блин, трафик на спящем 5,10,20.1000 секунд соединении, кроме возможно keep-alive?

Maxim
13.02.2018
09:55:29
С пулингом ты отправляешь запрос и надеешься что там что-то есть. Каждую итерацию.

Magic
13.02.2018
09:56:00
Короче это пустой разговор

Maxim
13.02.2018
09:56:07

Maxim
13.02.2018
09:56:14

Maxim
13.02.2018
09:56:15

Maxim
13.02.2018
09:56:36

Maxim
13.02.2018
09:56:39

Maxim
13.02.2018
09:56:47
ты просто, если точно не разбираешься, то послушай тех, кто понимает.

Andrew
13.02.2018
09:57:15
Спорить о том, что лучше, веб хуки или полинг, то же самое что спорить о том, что лучше, табуляция или пробелы

Maxim
13.02.2018
09:57:24
это т ак.
Возможно это так и выходит, но точно не во всех либах или языках.

Maxim
13.02.2018
09:57:45
мы говорим про хттп запрос, или даже точнее про tcp соединение.

Maxim
13.02.2018
09:58:13
Ну, это первое что мне пришло на ум, что может "удерживать" запрос до получения чего-либо

Maxim
13.02.2018
09:59:38

Maxim
13.02.2018
10:00:02
Т.е. каждый цикл - 1 запрос

Maxim
13.02.2018
10:00:28
я просто делал протоколы обмена с лонг-поллингом, и с клиентской стороны и с серверной.

Google

Maxim
13.02.2018
10:01:24
а если getUpdates() вернется с результатом только когда там что-то появится на другом конце?

Maxim
13.02.2018
10:02:00
и что?
Это должно быть довольно очевидно, что так делать не стоит, если есть возможность сделать проще.

Maxim
13.02.2018
10:02:21
тивиальный ведь код!

Maxim
13.02.2018
10:02:41

Maxim
13.02.2018
10:02:49
так он тоже тривиальный
почитай про tcp , про пакеты и про это все

Maxim
13.02.2018
10:03:28

Maxim
13.02.2018
10:03:44
это short polling значит
а разговор про long
то есть, когда серверный конец задерживает результат то того момента, как там что-то появится значимое

Maxim
13.02.2018
10:04:24
так понятно?
время ожидания выставляется в несколько секунд просто для удобства
можно его в бесконечность поставить теоретически

Maxim
13.02.2018
10:05:29
Я имею ввиду сам факт задержки запроса

Maxim
13.02.2018
10:05:49
зависит что именно?

Maxim
13.02.2018
10:06:17
Как ты можешь гарантировать чтобы сервер, который не под твоим контролем, подержал запрос до заполнения хоть чем-нибудь?

Maxim
13.02.2018
10:06:28
это не я гарантирую, а он :)

Google

Maxim
13.02.2018
10:06:38
прикинь до чего техника дошла! %:)

Maxim
13.02.2018
10:06:42
Ты шлёшь обычный запрос на нужный адрес с нужными данными и получаешь ответ
Сразу, без задержек

Maxim
13.02.2018
10:07:26

Maxim
13.02.2018
10:07:34
Я имею ввиду без каких-то ручных задержек, а не задержек из-за нагрузки или других пробелм на сервере

Maxim
13.02.2018
10:07:51
я ставлю время ожидания и ничего мне не приходит, если событиц нет - соединение в это время висит.
Чувак, вот мне уже надоело с тобой спорить.

Maxim
13.02.2018
10:08:41

Admin
ERROR: S client not available

Maxim
13.02.2018
10:08:42
Ты бы послушал более опытных в разработке товарищей, и поучился бы.

Maxim
13.02.2018
10:09:10

Maxim
13.02.2018
10:09:43
long polling не телеграмом придуман, эта практика тыщщу лет уже применяется, когда данные надо слать с одной стороы, а соединение делать с противоположной.
серверная сторона тупо не шлет данные в tcp соединение, и все сидят и ждут
когда придут данные, так они пройдут по соединению и запрос завершится, результат радостно вывалится на клиенте.
там есть некоторые сложности, но они совсем другого плана

Magic
13.02.2018
10:11:03
На моем домашнем ноуте крутится домашний бот. там лонг полинг ждет по 5 минут. кто-то и по 10 ставил.
т.е 1 запрос в 5 минут.

Maxim
13.02.2018
10:11:30
например, если делать поллинг с бесконечным ожиданием, то может поекспайриться какая-нибудь таблица трансляции посередине на роутере
но там времена порядка десятков минут

Google

Maxim
13.02.2018
10:12:38
я ставлю небольшие времена задержки только лишь для того, чтобы можно было быстро перезапустить клиента не закрывая его сокет отдельно.
чисто ленюсь :)
в теории лонгполлинг доставляет вам сообщения быстрее, чем вебхук

Suren
13.02.2018
10:13:32
почему же?

Maxim
13.02.2018
10:13:39
так как в вебхуке сначала надо сделать ssl negotiation
а когда вы делаете запрос, то оно делается до того.
Но это чисто теория :) На практике не так :)
На пальцах если то примерно так -
вот телега решила вам что-то послать, она нашла данные вашего вебхука, пошла в днс,
отресолвила имя, сконнектилась с на его ип, потом начала проверять сертификаты, которые предъявил вебхучный сервер
потом проверив валидность уже начинается передача, собственно, данных.
Это так рабоает вебхук.
При поллинге, вся ссл байда выполняется сначала, потом мы коннектимся и засыпаем.
дожидаемся долгожданного события, и оно сразу летит к нам в виде хттп пейлоада.
Еще раз - на практике все это величины в пределах погрешности, и на них плевать.

Magic
13.02.2018
10:29:04
По жесткому что-то виснет бот

Евгений
13.02.2018
10:29:20
@mpenzin правила чата не нарушайте

Maxim
13.02.2018
10:30:39

Евгений
13.02.2018
10:31:07
И тем не менее

Менеджер
13.02.2018
10:33:26
Добрый день.
Кто поможет сделать бота автопродаж?

Григорий
13.02.2018
10:35:19
Failed to get updates. Waiting: 1s { FetchError: request to https://api.telegram.org/botToken/getUpdates?offset=0&limit=100&timeout=30 failed, reason: connect ETIMEDOUT 149.154.167.197:443
at ClientRequest.<anonymous> (/root/m1000/node_modules/node-fetch/index.js:133:11)
at emitOne (events.js:96:13)
at ClientRequest.emit (events.js:191:7)
at TLSSocket.socketErrorListener (_http_client.js:358:9)
at emitOne (events.js:96:13)
at TLSSocket.emit (events.js:191:7)
at emitErrorNT (net.js:1283:8)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
name: 'FetchError',
message: 'request to https://api.telegram.org/botToken/getUpdates?offset=0&limit=
100&timeout=30 failed, reason: connect ETIMEDOUT 149.154.167.197:443',
type: 'system',
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT' }
Кто знает в чем трабла может быть ?