SignalR против setTimeout - PullRequest
       9

SignalR против setTimeout

4 голосов
/ 09 декабря 2011

Часть моей страницы просмотра MVC обновляется каждые 30 секунд после получения какого-либо ресурса с сервера.Я использовал setTimeOut для запуска метода javascript для асинхронной выборки данных с сервера, сравнения их со старыми данными и, если они изменились, обновления тега div.Теперь я подумываю создать таймер в классе global.asax, запустить его в событии application_start и в событии истекшего таймера, получить данные и отправить их всем клиентам, использующим SignalR, только если данные изменились.

Будет ли какое-либо преимущество в использовании SignalR по сравнению с setTimeOut здесь?

1 Ответ

5 голосов
/ 09 декабря 2011

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

Другое преимущество заключается в том, что SignalR будет передавать данные с сервера в браузер, используя лучшую доступную технологию, не беспокоясь о том, что вам нужно беспокоиться.об этом.Это могут быть WebSockets, если вы используете свой сервер на сервере Windows 8 с ASP.NET 4.5 (возможно, в будущем), или Server Sent Events, если клиентом является Chrome, Firefox или Opera, или Forever Frame, если клиентом является IE.В любом случае вам не нужно об этом беспокоиться, SignalR позаботится об управлении транспортом.

В зависимости от того, где хранятся ваши данные и как они обновляются, вы можете даже отказаться от них.с таймером, и просто транслировать данные всем клиентам сразу, когда они меняются.Если он обновляется другим методом действия на контроллере, просто отправьте оттуда клиентам.Если он обновляется через какой-либо другой процесс непосредственно в БД, вы можете настроить уведомление о запросе SQL в своем приложении (в App_Start), чтобы получать уведомления об изменениях, а затем транслировать в этот момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...