Мне не понятно, как работает User Long Poll API. Можете подсказать? С Bots Long Poll API я разобрался, а с пользовательским не очень. Два вопроса:
Я сделал так:
Отправил со своего сервера запрос такого вида (как в документации):
https://{$server}?act=a_check&key={$key}&ts={$ts}&wait=25&mode=2&version=3 переменные поменял на те, что в пункте 1
А дальше что? ВК будет присылать события на адрес страницы, с которой был запрос к пункту 2 или как?
Если да, то как их обрабатывать? Например, надо просто все события записать в файл. Тогда на PHP я пишу так:
header("Content-Type: text/html; charset=utf-8");
header("HTTP/1.0 200 OK");
$event = json_decode(file_get_contents('php://input'), true);
file_put_contents('1.txt', $event);
Но что-то ничего не записывает. Отправляю сам себе сообщения, а файлик пустой.
Странно, что вы говорите, что разобрались с Bots longPoll, ведь принцип же одинаковый.
Если обратиться к той же справке вк, то даже там вполне понятно описано.
А теперь, я попробую на пальцах:
Long polling - это когда вы кидаете http
- запрос на сервер. Но сервер не обязан вам отвечать сразу же. Он ждёт около 30 секунд, и после этого присылает вам пустой ответ (если ничего не произошоо).
Если что-то все же произошло, сервер отвечает на ваш запрос раньше 30-и секунд.
После того, как сервер вам ответит, вы кидаете ему новый запрос, и он вас ответит либо через 30 сек, либо раньше, есои что-то произойдёт.
Время, после которого сервер отвечает и обрывает соединение, ограничено 30-ю секундами (вы можете задать его сами, апи вк позволяет, если не ошибаюсь), т.к. возможны проблемы с некоторым сетевым оборудованием, которое само разоряет такое соединение после 30-и секунд.
И да, вы указываете серверу куда кидать ответ тогда, когда посылаете запрос, ведь сервер в состоянии определить, откуда он пришёл)
А теперь рассмотрим ситуацию по шагам:
{ts: ..., updates: [...]}
), соединение закрывается{updates:[]}
, если не ошибаюсь).Как-то так, надеюсь, что понятно.
И да. Я не пхп-шник, но парсить как json вам нужно именно ту "страничку", которую вернет вам запрос на адрес https://{$server}?act=a_check&key={$key}&ts={$ts}&wait=25&mode=2&version=3
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как отключить комментарии в DLE везде, кроме блога?
Написал свой проект на laraveleЗахотел обновить миграции, удалил все таблицы и хочу сделать миграцию
Есть приложение на андроиде к примеру myappapk и там используется reCaptcha Android(В качестве проверки при создании данной капчи на сайте гугла необходимо...