@SnakeAce

Как реализовать Vk Long Polling на C# в Windows 8.1 Store Apps?

Итак, подскажите как реализовать обращение к данному методу, а точнее messages.getLongPollHistory.
Обычные методы спокойно реализуются с помощью след, строк:
private static String StringS(String url)
            {
                    HttpClientHandler handler = new HttpClientHandler() { UseDefaultCredentials = true, AllowAutoRedirect = true };
                HttpClient client = new HttpClient(handler);
                HttpResponseMessage response = client.GetAsync(url).Result;
                response.EnsureSuccessStatusCode();
                var answer = response.Content.ReadAsStringAsync().Result;
return answer;
}

В данном случае результат приходит сразу, но как я понимаю, если запустить подобный метод для long pool'a то, он вернется раньше времени, или я чего то не понимаю? Так вот, как осуществить постоянное выполнение этого метода в приложении и как реализовать само обращение к серверу через лонг-пулл?
Пробовал нечто подобное:
string p = "";
for (;;){
p = StringS(url);
/*
*Тут находятся методы для обработки полученных данных
*/
 using (EventWaitHandle tmpEvent = new ManualResetEvent(false))
                    {
                        tmpEvent.WaitOne(TimeSpan.FromMilliseconds(500)); //достаточно ли 500ms?
                    }
}

Но опять,как мне кажется, возникает проблема с получением ответов от сервера. Подскажите решение данной проблемы.
  • Вопрос задан
  • 2440 просмотров
Решения вопроса 1
@Kano
В документации к long pooling серверу вконтакта довольно подробно указано как работать с потобным сервером - https://vk.com/dev/using_longpoll
Общий принцип такой что в фоне (отдельный поток) делаем запрос до сервера и ждем ответа (ответа можно ждать довольно долго или же почти моментально), в ответе приходит список сообщений их нужно отправить на обработку и не дожидаясь обработки сообщений заново делать запрос до сервера. И так повторять до завершения приложения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы