Есть несколько способов сделать это. Некоторые из них уже даны здесь ответы, но я хотел бы добавить еще несколько, а также свои мысли о них.
1. Опрос
Частые запросы отправляются на сервер для проверки новой информации. Это худший способ сделать это, но, вероятно, самый простой. Если на вашем сайте мало пользователей, возможно, стоит сделать это следующим образом.
Это может быть достигнуто с помощью setInterval(myFunction, n)
в javascript для отправки XMLHttpRequests
на сервер каждые n
миллисекунд. Затем на сервере вы отвечаете на это своей новой информацией, когда она у вас есть, или некоторым сообщением, которое не подразумевает никакой новой информации.
2. Длинный опрос
Когда страница загружается, она запрашивает у сервера новую информацию. Сервер удерживает соединение открытым до тех пор, пока не будет чего отправлять обратно. Этот метод уменьшает объем используемого сетевого трафика, но увеличивает ресурсы, используемые на сервере. Вы можете использовать это для небольшого числа пользователей, но это не очень хорошо масштабируется.
Самый простой способ сделать это - заставить страницу, которая обрабатывает AJAX-запрос, просто дождаться появления новой информации и затем ответить. Это может связать много соединений на вашем сервере. Поэтому используйте с осторожностью.
3. COMET
COMET в основном длинный опрос, но сервер для него настроен правильно. Он знает, что эти соединения не «настоящие», и использует меньше ресурсов для их обработки. Это отличное решение для этой проблемы, но оно требует, чтобы сервер был явно настроен для этой цели. Существуют серверы COMET и надстройки COMET для других популярных серверов, но это потребует некоторой настройки, а иногда и денег.
Реализация этого в .NET не самая легкая вещь в мире. Вы можете платить за решения, пытаться найти чужой код, который делает что-то подобное, или попытаться написать его самостоятельно. Я не нашел достойных бесплатных решений для этого. Если у кого-то есть, пожалуйста, прокомментируйте.
4. РИА
Другим решением будет включение Flash, Silverlight или Java-апплета на вашу страницу. Люди часто делают это, используя объект 1x1, чтобы они могли использовать Flash или Silverlight для общения с сервером. Если вы не возражаете против добавления зависимости, это достойное решение. Если вы уже знаете Silverlight или Flash, это может быть относительно просто реализовать.
В Интернете вы можете найти учебники для каждого из этих вариантов.
5. Сетевые розетки
Если вы находитесь на переднем крае, вы можете заглянуть в Сетевые розетки . Он доступен только в последних сборках современных браузеров. Это было частью HTML5, но теперь это может быть его собственная спецификация. В любом случае, это означает, что старые браузеры не смогут справиться с этим. Но, если вы не возражаете ограничиться новейшими браузерами, вы можете использовать эту удивительную функцию.
Я считаю, что Chromium - единственный браузер, который в настоящее время поддерживает его. Однако для реализации этого в Firefox и WebKit ведется работа.
Я избавлю вас от противоречий и просто скажу, что это именно то, что вы хотите. Аннотация спецификации говорит сам за себя.
В этой спецификации определяется API, который позволяет веб-страницам использовать протокол веб-сокетов для двусторонней связи с удаленным хостом.
Специальное упоминание
Если вас интересует мир Node JS, вы не ошибетесь с Socket IO . Он будет реализовывать лучшие из доступных технологий для браузера.
Заключение
Лучшим вариантом является Socket.IO на Node JS. Однако, для решения ASP.Net, перейдите на COMET или веб-сокеты, если можете. В противном случае, использование Flash / Silverlight не страшно. Наконец, опрос и длительный опрос должны быть последними прибежищами. Вы всегда можете поддержать один из них, а затем переключиться на другой, если в браузере клиента его нет.