我最近遇到过一些情况,其中服务器会分发一个事件流,其中包含所有侦听器的完全相同的数据,例如“最近活动”框。
在我看来,像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
这样的事情存在吗?会有用吗?有可能吗?
免责声明:我不是服务器专家。
答案 0 :(得分:1)
查看node.js - 单线程,事件驱动的服务器。使用JavaScript作为奖励。
答案 1 :(得分:1)
如果您使用的是ASP.NET,则以下帖子应该是有用的
http://beta.codeproject.com/KB/aspnet/CometAsync.aspx
顺便说一句,有可能实现Comet为每个线程服务多个客户端,但是对于所有客户端只有一个线程似乎不够?
答案 2 :(得分:0)
您正在谈论应用于Comet的“异步Web请求”,有些像“异步Comet”。
在我看来,这种方法如今很流行,是deeply flawed。