[EN] VK LongPoll is a module created to automatically configure LongPoll in the Vkontakte group.
[RU] VK LongPoll — Это модуль, созданный для автоматической настройки LongPoll в группе Вконтакте.
npm i vk-io-longpoll
Examples of using in place with VK-IO
const < VK, Keyboard > = require(‘vk-io’) const < LongPoll > = require(‘vk-io-longpoll’); const vk = new VK(< token: process.env.
TOKEN apiMode: ‘sequential’, pollingGroupId: 123456789 >) const pool = new LongPoll(< token: process.env.TOKEN group_id: 123456789 >) const < updates > = vk; updates.start() .then(() => < console.
log(‘Bot Started’) >) .catch((e) => < if(e.toString(/(№100)/ig, ‘LongPoll’)) < console.log(‘Configure LongPoll : )’); pool.longpoll(); return; > console.error(‘Error: n’+ error) >) .
Источник: libraries.io
Чат Бот на JAVA для беседы ВК
Polling и Long polling
Мы сейчас живем в мире realtime приложений, где для актуальной доставки информации используются быстрые и удобные socket соединения, которые позволяют отправить новое событие напрямую на устройство клиента.
Но настроить socket-соединение не всегда очень просто. Иногда это не позволяет хостинг, а иногда просто нет ресурсов на поддержку инфраструктуры, тестирование отказоустойчивости и безопасности. В таком случае можно воспользоваться поллингом.
polling — голосование, опрашивание. Само название намекает на то, что будет происходить регулярный опрос чего-то. В нашем случае, сервера.
Голосовать мы, конечно же, не будем. А вот опрашивать сервер будем еще как. Идея достаточно простая — регулярно опрашивать сервер на предмет новых изменений.
Обычный polling
Например мы пишем мессенджер и хотим доставлять пользователям новые сообщения. В случае обычного polling клиентское приложение (телефон/браузер) будет кидать запрос GET /messages каждые N секунд (например каждые 2 секунды).
Решение «в лоб» и приводит к необходимому результату — пользователь получает свои сообщения не познее 2х секунд после их появления. Но минусы достаточно очевидны:
- Надо все же ждать 2 секунды до получения некоторых сообщений
- Нагрузка на сервер неоправданно высока. Необходимо каждые 2 секунды создавать соединение с сервером, инициализировать приложение и тд. Все этоприводит к накладным расходам
Тут как раз на сцену выходит long polling
Что такое long polling?
Это все тот же polling, но уже с немного другой идеей. В рамках long polling клиент отправляет запрос на сервер с заранее заданным timeout (обычно 30 сек). Сервер обрабатывает этот запрос в режиме бесконечного цикла с указанным timeout и, в рамках цикла, ожидает необходимые для пользователя обновления. Как только обновление появляется сервер сразу же отдает ответ и закрывает соединение.
Чат Бот на JAVA для беседы ВК #2
Таким образом мы лишаемся двух минусов polling и отдаем пользователю обновления с минимальной задержкой. У long polling, конечно же есть свои минусы и для решения их уже есть websockets.
Источник: amorev.ru
Что такое Long-Polling, WebSockets, SSE и Comet
Недавно один из подписчиков спросил, как работают уведомления вконтакте? Или других высоконагруженных проектах, ведь они приходят мгновенно и, если использовать обычный ajax, то сервер достаточно быстро упадет. Вот о том, какие существуют способы реализации данного функционала, мы и поговорим в сегодняшней статье.
Для начала рассмотрим, как вообще идет http запрос при обычной работе
Regular http
1. Клиент посылает запрос на вебстраницу к серверу
2. Сервер формирует ответ
3. Сервер посылает ответ клиенту
AJAX Polling
1. Клиент посылает запрос на вебстраницу серверу, используя обычный http(regular http)
2. Запрошенная страница выполняет JavaScript, который запрашивает файл от сервера через какой-то интервал времени(например, 0.5 секунд)
3. Сервер формирует ответ для каждого запроса и отсылает его обратно
AJAX Long-Polling
1. Клиент запрашивает страницу у сервера, используя обычный http
2. Запрошенная страница выполняет JavaScript, который запрашивает файл от сервера.
3. Сервер НЕ реагирует на запрошенную информацию и ждет, пока не появится новой информации
4. Когда появляется новая информация, сервер отсылает ее клиенту
5. Клиент получает новую информацию и НЕМЕДЛЕННО отсылает другой запрос серверу, запуская процесс ожидания на нем снова.
HTML5 Server Sent Events(SSE)
1. Клиент запрашивает страницу у сервера, используя обычный http
2. Запрошенная страница выполняет JavaScript, который открывает соединение с сервером
3. Сервер посылает событие клиенту, когда появляется новая информация
- Трафик в реальном времени от сервера клиенту, главным образом, то, что вам нужно
- Вы захотите использовать сервер, который имеет цикл событий
- Нет возможности соединиться с сервером с другого домена
HTML5 WebSockets
1. Клиент запрашивает страницу у сервера, используя обычный http
2. Запрошенная страница выполняет JavaScript, который открывает соединение с сервером
3. Сервер и клиент могут посылать друг другу сообщения, когда новая информация доступна(либо на сервере, либо на клиенте)
- Трафик в реальном времени от сервера к клиенту и от клиента к серверу
- Вы захотите использовать сервер, который имеет цикл событий
- Есть возможность соединиться с сервером с другого домена
- Есть возможность использовать третью сторону веб-сокет сервера, например, Pusher
Comet
Comet — это коллекция техник, которые были до HTML5 и которые используют потоковую передачу и долгосрочный опрос для достижения приложения, работающего в реальном времени.
Итак, мы рассмотрели возможные способы реализации данного функционала. У каждого способа есть как свои плюсы, так и свои минусы. Однако, сейчас лучшим и быстро развивающимся способом считается WebSockets. Но помните, что HTML5 поддерживают только современные браузеры и про старые, увы, придется забыть, если вы будете использовать сокеты.
В ближайшее время я буду писать статьи про каждый из этих способов, так что подписывайтесь на обновления сайта, чтобы не пропустить! 🙂
Спасибо за внимание и удачного вам кодинга!
Создано 30.07.2014 20:10:19
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 4 ):
GALAPERIDOL 31.07.2014 09:25:52
Вот теперь ясно! Спасибо 🙂
kruty 02.08.2014 16:29:00
Ну, є одна проблема.. php створений, щоб помирати.. тому, треба обробляти на node.js і т.д, або ж якщо хочеться, щоб менше витрачало ресурсів — с++. І це.. це діло потрібно проксувaти nginx
administrator 23.05.2015 11:00:52
тоесть непрерывного айфрейма больше не существует по вашему?
fixruss 01.11.2016 08:16:29
Было бы не плохо посмотреть пример
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Источник: myrusakov.ru