Закрыть
npm

Streaming API Редактировано: 28.08.2020 в 04:45

{...} Для включения или отключения используйте utils.streamingAPI

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()

Метод добавляет новое правило в стрим

Аргументы

  • tag * (<string>) - имя правила
  • value * (<string>) - само правило, текст правила


stream.addRule('cats', 'кошка кот -собака').then(() => {
	
	console.log('Добавили новое правило!');

})

#stream.deleteRule()

Метод удаляет правило из стрима

Аргументы

  • tag * (<string>) - имя правила, которое нужно удалить


stream.addRule('cats', 'кошка кот -собака').then(() => {
	
	console.log('Добавили новое правило!');

	stream.deleteRule('cats').then(() => {
		
		console.log('Удалили правило! Любители кошек, простите!');

	});
	
})

#stream.initRules()

Метод управляет всеми правилами стрима. По сути он - это простой менеджер правил, он сам понимает, какие правила нужно удалить, какие добавить. Если в нем есть какое-то правило, которого нет в стриме, он его добавит, и наоборот, если в стриме есть правило, а в нем нет - он его удалит. Удобный инструмент, который заменяет все остальные методы.

Аргументы

  • rules * (<Object>) - объект с правилами, которые теперь будут в точности продублированы в стриме.

Метод возвращает объект 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)