【发布时间】:2011-07-15 11:14:46
【问题描述】:
我想使用客户端-服务器协议将数据推送到始终保持连接的客户端,24/7。
HTTP 是一个很好的通用客户端-服务器协议。我不认为任何其他协议的语义可能会有很大不同,并且存在许多好的 HTTP 服务器。
关键因素是连接数:应用程序将逐渐扩展到非常大量的客户端,例如 100,000 个。它们不能是服务器,因为它们具有动态 IP 地址并且可能位于防火墙后面。因此,必须建立并保留一个套接字链接,这导致我们进行 HTTP 推送。数据实际上很少被推送到给定的客户端,因此我们也希望尽量减少连接开销。
服务器应通过接受连接、将远程 IP 和端口插入表中并使其空闲来处理此问题。我们不希望运行 100,000 个线程,只希望有这么多的表条目和文件描述符。
有没有什么方法可以使用现成的 HTTP 服务器来实现这一点,而无需在套接字层编写代码?
【问题讨论】: