LongPoll API Редактировано: 28.08.2020 в 04:45
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)
})