Опрашивает ли способ перейти к живому чату в Интернете? - PullRequest
1 голос
/ 19 октября 2011

Я пытаюсь реализовать пользовательскую программу чата в Интернете, но я не уверен, как обрабатывать обновления в реальном времени (или почти в реальном времени) для пользователей.Будет ли разумнее отправлять запросы Ajax со стороны клиента каждую секунду или около того, опрашивая базу данных на предмет новых комментариев?

Есть ли способ каким-либо образом транслировать из базы данных каждый раз, когда добавляется комментарий?Если это возможно, как это будет работать?Я использую Sql Server 2008 с Asp.net (c #).

Спасибо!

Ответы [ 3 ]

2 голосов
/ 19 октября 2011

Каждый клиент может опрашивать сервер, а на стороне сервера держать соединение открытым без ответа.

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

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

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

2 голосов
/ 19 октября 2011

Использовать длинный опрос / серверную передачу / комету:

http://en.wikipedia.org/wiki/Comet_(programming))

Также см .: http://en.wikipedia.org/wiki/Push_technology

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

0 голосов
/ 19 октября 2011

Неа. используйте системы очередей, такие как RabiitMq или ActiveMQ. Проверьте mongoDB тоже.

Система очередей предоставит вам возможность публикации и подписки.

...