Streaming API Редактировано: 28.08.2020 в 04:45
easyvk({
utils: {
streamingAPI: true
}
})
This util not connected. Make params.utils[streamingAPI] = true
Streaming API - это удобный инструмент, который может помочь вашим рекламщикам, вашей компании или рекламному агентству собирать данные о популярности тех или иных продуктах / проектах и т.д. Проще говоря, вы подключаете Streaming API к своему серверу или куда-хотите, на пример, в программу, как-то вязанную с метрикой вашего продукта, и затем, собираете данные из ВКонтакте. Как только, какой-то пользователь публикует пост / делает комментарий, в котором идет упоминание вашего продута, вы собираете это в данные затем составляете метрику популярности. Анализ данных, короче говоря.
В EasyVK Streaming API имеет большое преимущество среди остальных возможностей, так как на прямую может принести пользу многим сервисам.
Техническая справка
Streaming API работает по протоколу wss:// (или ws://) - WebSocket. Чтобы прослушивать события ВК, необходимо добавить правила (ключевые слова, иначе говоря), по которым будет вестись сбор информации. Если в каком-то блоке информации есть совпадение по вашему правилу, то сервер ВКонтакте сразу (в реальном времени) отправляет эти данные на поток данных, вы в конце получаете эти данные. Данные поступают практически в реальном времени, обычно максимальная задержка - 5 минут (лично сталкивался). В EasyVK вы уже вправе делать с данными то, что хотите.
Примечание
ВКонтакте предоставляет 1% данных стрима, всех событий. Это необходимо, чтобы не нагружать сервера сильно. Если вам необходимо получить Все 100% данных, чтобы собрать метрику более точной, то необходимо написать в поддержку ВКонтакте (именно по API) с просьбой открыть эту возможность для вашего приложения. Если возникнут проблемы при работе со 100% данными, напишите мне в личные сообщения, я отвечу и постараюсь помочь.
streamingAPI.connect()
Метод подключается к стриму по протоколу wss://
и начинает слушать событий стрима, в него необходимо передать данные Вашего приложения ВКонтакте (его можно создать на этой странице)
! Streaming API не поддерживает работу через прокси. Я пытался реализовать этот функционал, но ВКонтакте не позволяет получать данные через стороннее подключение. В поддержке мне ответили, что так должно быть. Почему - не знаю.
Параметры
- clientId - ID Вашего приложения
- clientSecret - Секретный ключ Вашего приложения
Метод возвращает объект StreamingAPIConnection
easyvk.streamingAPI.connect({
clientId: 'id',
clientSecret: 'client_secret'
}).then((stream) => {
stream.on("post", console.log);
stream.on("comment", console.log);
});
Почитайте, как работать со стримом
#stream.addRule()
Метод добавляет новое правило в стрим
Аргументы
stream.addRule('cats', 'кошка кот -собака').then(() => {
console.log('Добавили новое правило!');
})
#stream.deleteRule()
Метод удаляет правило из стрима
Аргументы
stream.addRule('cats', 'кошка кот -собака').then(() => {
console.log('Добавили новое правило!');
stream.deleteRule('cats').then(() => {
console.log('Удалили правило! Любители кошек, простите!');
});
})
#stream.initRules()
Метод управляет всеми правилами стрима. По сути он - это простой менеджер правил, он сам понимает, какие правила нужно удалить, какие добавить. Если в нем есть какое-то правило, которого нет в стриме, он его добавит, и наоборот, если в стриме есть правило, а в нем нет - он его удалит. Удобный инструмент, который заменяет все остальные методы.
Аргументы
Метод возвращает объект log
, в котором описаны все изменения стрима: удаленные, измененные и добавленные правила
stream.initRules({
rule_1: 'кошка -собака',
rule_2: 'попугай'
}).then((log) => {
// Теперь в стриме только эти правила
console.log(log.changedRules, log.addedRules, log.deletedRules);
});
#stream.deleteAllRules()
Метод тупа удаляет все правила стрима
Не принимает никаких аргументов
stream.addRule('cats', 'кошка кот -собака').then(() => {
console.log('Добавили новое правило!');
stream.deleteAllRules().then(() => {
console.log('Удалили все правила! Любители кошек, мы с вами!');
});
})
#stream.getRules()
Метод возвращает правила стрима
Не принимает никаких аргументов
Возвращает объект StreamRules
stream.addRule('cats', 'кошка кот -собака').then(() => {
console.log('Добавили новое правило!');
stream.getRules().then((rules) => {
console.log(rules);
});
})
#stream.close()
Метод закрывает стрим, прекращает прослушивание, правила сохраняются в стриме!
stream.close()
# События стрима
Так как Streaming API предполагает получения информации из стрима в реальном времени, в нем есть определенные события, которые возникают при прослушивании, такие, как, например "пользователь сделала пост" (post
) и т.д, подробнее о событиях стрима можно почитать на странице документации ВКонтакте
- serviceMessage - Сервисное сообщение
- error - Событие ошибки в подключении
- failure - Подключение разорвалось или упало
- pullEvent - Произошло какое-то событие стрима (дублирует все события в одно)
- post - Пользователь сделал пост, в котором нашлись совпадения по Вашим правилам стрима
- comment - Пользователь сделал комментарий, в котором нашлись совпадения по Вашим правилам стрима
- share - Пользователь сделал репост поста, в котором нашлись совпадения по Вашим правилам стрима
stream.on('error', console.error)
.on('failure', console.error)
.on('serviceMessage', console.log)
.on('post', console.log)