Обновление данных в клиентском приложении, как избежать опроса? - PullRequest
4 голосов
/ 26 января 2010

У меня есть настольное клиентское приложение, которое общается с серверным приложением через REST API, используя простые сообщения HTTP. В настоящее время у меня есть опрос клиента каждые X минут, но я бы хотел, чтобы данные обновлялись чаще. Возможно ли, чтобы сервер уведомлял клиента о любых новых данных, или это выходит за рамки того, для чего предназначен HTTP-сервер? Любые мысли о том, как лучше подойти к этому, будут высоко оценены. Спасибо!

Ответы [ 2 ]

3 голосов
/ 26 января 2010

Возможно, вы захотите проверить принятый ответ на следующее сообщение о переполнении стека, которое описывает на простом примере, как реализовать Длинный опрос с использованием php на стороне сервера:

При использовании длинного опроса ваше клиентское приложение запускает запрос к HTTP-серверу с бесконечным тайм-аутом (или очень длинным). Теперь, как только появятся новые данные, сервер найдет активное соединение готовым, поэтому он может немедленно отправить данные. При традиционном опросе вам придется подождать, пока приложение не инициирует новый опрос, а также задержку сети, чтобы достичь сервера, прежде чем отправлять новые данные.

Затем, когда данные отправляются, соединение закрывается, но ваше приложение должно немедленно открыть новое, чтобы иметь постоянно открытое соединение с сервером. На самом деле будет очень маленький промежуток, когда не будет активного соединения, но во многих приложениях это часто пренебрежимо мало.

1 голос
/ 26 января 2010

Если вы держите HTTP-соединение открытым на стороне сервера, вы можете отправлять данные всякий раз, когда происходит обновление, а затем сбрасывать соединение для фактической отправки данных. Это может вызвать проблемы со стеком TCP / IP, если требуются десятки тысяч соединений.

...