1

长轮询解决了我 99% 的问题。现在只有另一个问题。想象一个便士拍卖网站,人们在其中出价。在首页,有几个拍卖。

如果用户打开其中三个拍卖,并且由于 javascript 不是多线程的,那么您将如何让其他页面加载?他们不会总是因为等待长轮询结束而陷入困境并且无法加载吗?在实践中,我经历过这一点,我想不出办法。有任何想法吗?

4

1 回答 1

0

javascript 有两种方法可以解决其中的一些问题。

  1. 虽然 javascript 在概念上是单线程的,但它使用完成处理程序在单独的线程中执行其 io。这意味着在您等待网络请求完成时,可以运行其他 javascript 片段。
  2. 每个页面(甚至每个页面中的每个框架)的 Javascript 都与其他页面/框架上的 Javascript 隔离。这意味着每个 javascript 副本都可以在自己的线程中运行。

对您来说更大的问题可能是浏览器通常会限制与给定站点的并发连接数,听起来您想与同一站点建立许多并发连接。在这种情况下,您将被锁定。

如果您同时控制服务器和客户端,则需要将来自客户端的多个长轮询请求组合成一个对服务器的长轮询请求。

于 2013-03-11T07:13:44.170 回答