我正在阅读将服务器推送到客户端的各种方式(broswer)。我想了解这些方法中的最佳方法。
这里的优点是我们将有多个线程并行运行并有效利用CPU。
有人能建议最好的实施方式吗?任何其他方式也表示赞赏。
答案 0 :(得分:0)
你似乎误解了一些事情。您无法将长轮询与服务器端技术进行比较。
长轮询意味着客户端(即浏览器)向服务器发出AJAX请求。然后,服务器将该请求保持活动状态,直到有通知为止。然后它响应该请求,客户端在收到更新后立即使用新的AJAX请求调用服务器。
您可以在服务器端选择要处理的任何技术。人们在脑海中制作了NodeJS,因此我建议使用它。但是,使用最适合你的东西。
现在另一个误解是线程提高了性能,因此它们比单线程应用程序更好。实际情况恰恰相反:使用线程性能会变差(这里我假设我们正在使用一个核心CPU)。线程会增加响应性,但不会提高性能。然而,有一个问题(使用单线程应用程序),如果您尝试做的事情是CPU密集型,那么它将阻止您的服务器。但是,如果您正在谈论简单的通知,那么这根本不是问题(您不需要CPU功率)。侧面注意:您可以像拥有内核一样激活NodeJS的多个实例以利用多个内核(但是,您需要更复杂的代码)。
此外,您应该考虑使用WebSockets(从而在服务器端实现简单的TCP服务器)。长轮询是低效的,大多数现代浏览器都支持WebSockets(特别是IE10 +,因为它始终是IE的问题)。
总结:在服务器端使用您最熟悉的技术。