Вопрос

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

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

То, что я бы сделал для этих глобальных (не каждого пользователей) потоков, выполняется одной резьбой, которая непрерывно испускает данные, а новую (зеленую) нить для каждого нового запроса, который выводит заголовки, а затем «объединения» в основной нить.

Возможно ли один поток для обслуживания нескольких розеток или для нескольких клиентов, чтобы прослушать ту же сокет?

Пример

O = событие

       # threads received
|  a b # 3
o / /  # 3       -
|/_/
|      # 1
o  c   # 2       a, b
| /
o/     # 2       a, b
o      # 1       a, b, c
|      #                    connection b closed
o      # 1       a, c

Есть ли что-то вроде этого? Будет ли это работать? Можно ли сделать?

Отказ от ответственности: Я не эксперт сервера.

Это было полезно?

Решение

Ознакомьтесь с Node.js - Single Threade, управляемый событием сервера. Использует JavaScript в качестве бонуса.

Другие советы

Если вы используете ASP.NET, следует полезно следующий пост

http://beta.codeProject.com/kb/aspnet/cometasync.aspx.

Кстати, можно реализовать комета для обслуживания более одного клиента на тему, но только один нить для всех клиентов кажется недостаточно?

Вы говорите о «асинхронных веб-запросах», применяемых к Comet, некоторые, как «асинхронная комета».

По моему мнению этот подход, так популярен в эти дни, глубоко недостаточно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top