我有一个基于 javascript 的客户端,当前正在轮询 .NET Web 服务以获取新内容。虽然轮询有效...我对这种方法不满意,因为我正在使用系统资源并在没有接收任何更改时产生开销。
我的问题是如何通知我的客户有新内容可供显示?我对实施此解决方案所必须使用的任何其他技术持开放态度。
首先,民意调查是可行的方法。您可以使用 Flash、Silverlight 或 Comet 来实现 -http://en.wikipedia.org/wiki/Comet_(编程) http://en.wikipedia.org/wiki/Comet_(programming)它可以为您打开 TCP 连接以接收通知。 网页本身无法保持套接字打开,因此无法直接通知 Web 客户端。
[Edit]但是想一想,一次可以有多少个客户端与一台服务器保持 tcp 连接?对于较大的系统,您很快就会用完可用的套接字,因为有 65k 个可用端口。
您的服务器可以处理多少并发连接取决于您的硬件资源。如果你有足够的内存和CPU,你应该能够处理~100k甚至更多。但是,如果每个请求都通过 tcp/ip 访问数据库或某些其他资源,则可能会限制每个 ip 可用的端口数 (65k)。您还应该让推送请求针对单独的域,因为浏览器通常限制每个域有两个并发连接,这样就不会干扰正常的页面加载。
使用轮询结合前面的缓存服务器是一个很好的解决方案。您可以在服务器上使用逻辑来更新每个客户端的缓存,从而减少每次轮询的负载。您可以为在 X 分钟内登录/轮询的用户更新缓存,以进一步减少缓存更新。对我来说,从技术角度来看,实施拉动比拉动更容易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)