长轮询阻止多个窗口?

时间:2013-02-28 09:44:17

标签: long-polling

长期民意调查解决了我99%的问题。现在还有另一个问题。想象一下一个便宜的拍卖网站,人们在那里出价。在首页上,有几个拍卖。

如果用户打开其中三个拍卖,并且因为javascript不是多线程的,那么您将如何让其他页面加载?难道他们总是陷入困境并且没有加载,因为他们正在等待长时间的轮询结束?在实践中,我已经经历过这一点,我无法想到解决它的方法。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

javascript可以通过两种方式解决其中一些问题。

  1. 虽然javascript在概念上是单线程的,但它使用完成处理程序在单独的线程中执行其io。这意味着在您等待网络请求完成时,其他javascript可以正在运行。
  2. 每个页面的Javascript(甚至每个页面中的每个帧)都与其他页面/框架上的Javascript隔离。这意味着每个javascript副本都可以在自己的线程中运行。
  3. 对您而言,一个更大的问题可能是浏览器通常会限制与给定网站的并发连接数,而且听起来您希望与同一网站建立多个并发连接。在这种情况下,您将获得锁定。

    如果同时控制服务器和客户端,则需要将来自客户端的多个长轮询请求合并到服务器的单个长轮询请求中。