Закрыть
npm

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

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

easyvk({
  utils: {
    longpoll: true
  }
})

This util not connected. Make params.utils[longpoll] = true

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

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


vk.longpoll

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

# longpoll.conect()

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

Параметры

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

Метод вернет объект LongPollConnection


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

vk.longpoll.connect(lpSettings).then((lpcon) => {
	
	lpcon.on("message", console.log);

})

# 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((lpcon) => {
  
  lpcon.debug(longPollDebugger)

})

# lpcon.close()

Метод закрывает подключение

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


lpcon.close();

# События

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

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


vk.longpoll.connect().then((lpcon) => {

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

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

})