none
обращение к клиенту RRS feed

Ответы

  • Не думаю, что так можно сделать. HTTP использует парадигму «разъединения», т.е. сервер не может посылать данные клиенту пока тот их не запросил. На практике, когда что-нибудь меняется на вашем сервере (клиент А делает изменение в данных и посылает их на сервер для обновления), то HTTP-сервер не может стандартным способом послать эти изменения клиенту Б которому страница уже отрендерилась в браузере и он ее уже просматривает.
    Однако вот что можно сделать.

     

    Можно делать автоматическое обновление страницы каждые t секунд.
    Через JavaScript:

    setTimeout("location.reload(true);", timeout);
    
    Тоже самое на ASP.NET:
    Page.ScriptManager.RegisterStartupScript(this.getType(), "refresh", "window.setTimeout('window.location.reload(true);',5000);", true);
    
    Или с помощию мета тега:
    <meta http-equiv="refresh" content="600">
    

    Конечно, если на этой странице можно еще и вводить какие-то данные, то это очень плохой способ и так лучше не делать. Альтернативно можно запихнуть не редактируемую часть данных в iframe или обычный frame и обновлять только фрейм.

     

    Или, наконец, предоставить кнопку для обновления данных (повторюсь, пользователь должен запросить данные, чтобы они отправились ему, сервер не может делать это автоматически).

    На ASP.NET (GET параметры сохраняются):

    Response.Redirect(Request.RawUrl)
    
    Или вот так еще, но GET параметры НЕ сохраняются:
    Response.Redirect(Request.Url.AbsoluteUri);
    

    Можно и через JavaScript на стороне клиента:

    <script type="text/javascript">
     function reloadPage()
     {
     window.location.reload()
     }
    </script>

    Сюда же можно отнести и другие способы вроде AJAX...

     

    Можно еще использовать встроенные контролы, Silverlight, java апплеты, Flash...  Устанавливается TCP соединение как клиент/сервер от контрола/апплета, на TCP клиент/сервер (например на IIS сервер). При загрузке на сервер IIS посылается событие «UserReadingPage», а при уходе пользователя со страницы «UserLeftPage». При изменении данных веб приложение посылает команду обновления TCP приложению, установленному на той же машине что и IIS, а это приложение в свою очередь посылает каждому клиенту команду обновления. Это тяжело, сложно и будут проблемы с безопасностью.


    А вообще способов достаточно много. Все зависит от типа приложения, которое вы делаете и вам виднее какой способ использовать.
    • Предложено в качестве ответа Abbas Gussenov 28 апреля 2011 г. 21:03
    • Помечено в качестве ответа Abolmasov DmitryModerator 3 мая 2011 г. 6:09
    28 апреля 2011 г. 20:51