Я недавно встретился с несколькими случаями, где сервер распределит поток событий, который содержит те же самые данные для всех слушателей, таких как 'недавнее действие' поле.
Мне пришло в голову, что это довольно странно и неэффективно, чтобы иметь сервер как 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 - однопоточный, управляемый событиями сервер. Использует JavaScript в качестве бонуса.
Если вы используете ASP.NET , следующий пост должен быть полезным
http://beta.codeproject.com/KB/aspnet/CometAsync.aspx
Кстати, можно реализовать Comet для обслуживания более одного клиента на поток, но кажется, недостаточно только одного потока для всех клиентов?