@botoid

Страница 2343 из 4042
Magic
13.02.2018
09:51:44
Если не получается обеспечить себе домен (что может быть дорого, соглашусь) с ключом (дёшево или вообще бесплатно), то - да, LP менее стабильное, но тоже решение для работы в проде.
Причем тут не получается? Элементарно бот находится за NAT к примеру, или ещё что. Туда куда домен нет смысла проводить или не нужно наоборот

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

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
Тем что ты не спамишь запросами каждые Х секунд
1 запрос один хук. За один Лонг пул можно вытащить пачку запросов

Maxim
13.02.2018
09:53:51
ты открываешь целый ссл порт, к твоему сведению
Да. И его можно ограничить на диапазон IP телеги. Я не вижу в этом проблемы

Maxim
13.02.2018
09:54:04
этом?

электроны в проводах?

Maxim
13.02.2018
09:54:19
1 запрос один хук. За один Лонг пул можно вытащить пачку запросов
А можно и не вытащить если их нет. В обеих случаях ты уже отправляешь запрос

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: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
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:41
тивиальный ведь код!
Я не про код, а про процесс получения обновлений

Maxim
13.02.2018
10:02:49
так он тоже тривиальный

почитай про tcp , про пакеты и про это все

Maxim
13.02.2018
10:03:28
а если getUpdates() вернется с результатом только когда там что-то появится на другом конце?
GetUpdates приходит сразу после запроса. Он может быть с обновлениями, а может и быть пустым, если обновлений нет

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
я ставлю время ожидания и ничего мне не приходит, если событиц нет - соединение в это время висит.

Чувак, вот мне уже надоело с тобой спорить.

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
@mpenzin правила чата не нарушайте
ну то живая беседа была , в реальном времени :) А описание протокола разбито на смысловые секции

Евгений
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' } Кто знает в чем трабла может быть ?

Страница 2343 из 4042