Закрыть

LongPoll API Редактировано: 28.08.2020 в 04:15

LongPoll API - это инструмент, сделанный, чтобы прослушивать события аккаунта пользователя или группы пользователя. Например: пользователь отправил сообщение, или пользователю пришло сообщение. И т.д

Обращаться к longpoll можно таким образом


vk.longpoll

С недавних пор в API ВКонтакте появилось еще Bots LongPoll API - это LongPoll чисто для групп, для ботов.

Как использовать LongPoll API, читайте ниже

# longpoll.conect()

Метод создает подключение LongPoll и начинает прослушивать события пользователя или группы

Параметры

  • forGetLongPollServer - Параметры, которые будут отправлены с первым запросом на метод messages.getLongPollServer
  • forLongPollServer - Параметры, которые будут отправляться в каждом запросе событий (mode, wait и т.д), подробнее

Метод вернет следующий объект


{
	vk: EasyVK,
	connection: LongPollConnection // Подключение, работаем с ним
}

const lpSettings = {
  forGetLongPollServer: {
    lp_version: "3", //Изменяем версию LongPoll, в EasyVK используется версия 2
    need_pts: "1"
  }, 
  forLongPollServer: {
    wait: "15" //Ждем ответа 15 секунд
  }
}

vk.longpoll.connect(lpSettings).then(({connection: lpcon}) => {
	
	lpcon.on("message");

})

# lpcon.addEventCodeListener()

Так как в LongPoll API все события - это просто цифры, я сделал метод, который позволяет дать каждому идентифекатору события свой слушатель, но, конечно, в некоторых событиях, вроде message уже есть имена, и Вы можете просто прослушивать их через мтеод .on(), о таких событиях написано ниже

Аргументы

  • eventCode * (<number>) - идентифекатор события, о них читайте на этой странице
  • handler * (<Function>) - Функция, которая будет вызываться, когда будет происходить указанное событие


connection.addEventCodeListener(3, (event) => { 

  // Сброс флагов сообщения, например: прочитано
  console.log(event)

})

# lpcon.debug()

Метод позволяет дебажить LongoPoll API, все данные, которые приходят и уходят, будут отправляться в выбранную функцию

Агументы

  • debugger * (<Function>) - функция, которая будет вызываться при определенных действиях, в нее будет отправляться лог о событиях LongPoll API


function longPollDebugger({type, data}) {
  console.log(`[typeLog ${type}]`, data);
}

vk.longpoll.connect()
.then(({connection: lpcon}) => {
  
  lpcon.debug(longPollDebugger)

})

# lpcon.close()

Метод прекращает подключение

Не принимает никаких аргументов


lpcon.close();

# События

В User LongPoll API все события - это по сути числа, их идентификаторы, поэтому в EasyVK поддерживаются лишь определенные события, поддержка остальных событий производится через метод connection.addEventCodeListener()

  • [4] {message} - Пользователь отправил сообщение, либо ему отправили сообщение
  • [8] {friendOnline} - Друг стал онлайн
  • [51] {editChat} - В беседе произошли изменения, например, название сменил Антон
  • [61] {typeInDialog} - Человек набирает сообщение в диалоге с пользователем
  • [62] {typeInChat} - Человек набирает сообщение в беседе
  • error - Возникла ошибка в подключении
  • reconnectError - Возникла какая-то ошибка при попытки переподключиться, когда какие-то параметры сервера изменяются
  • failure - Возникает, когда подключение разрывается, или, сервер слишком долго не отвечает
  • close - Возникает, когда подключение закрывается по принуждению


vk.longpoll.connect().then(({connetion:lpcon}) => {

  lpcon.on('error', console.error)
	  .on('failure', console.error)
	  .on('reconnectError', console.error)

  lpcon.on('messsage', console.log)

})