具有超时的同步ajax请求?

时间:2013-08-29 22:51:45

标签: javascript ajax comet

我写了一个网络论坛,也可以作为同步聊天客户端(帖子立即显示)。这通过使用单个长轮询ajax请求(有时称为“彗星”)以通常的方式工作。

当用户关闭其中加载了其中一个“聊天室”的标签时,我需要告诉服务器该用户正在离开房间,以便将它们从“用户查看”列表中删除以及制作确保在他们离开后到达的新帖子标记为未读。

现在我正在使用window.onbeforeunload处理程序中的同步ajax(open(的第三个参数为false)请求到服务器。它通常以< 2秒,对可用性几乎没有影响。

现在出现问题。假设此用户已打开5个以上的标签,并在同一个域上托管聊天室。然后他们关闭一个。每个域值的浏览器最大同时http请求启动并使“我要离开”同步ajax请求等待其他一个请求完成,但那些可能永远不会完成,因为它们是彗星(“长轮询”或其他) 。所以现在我已经有效地锁定了他们试图关闭的标签。

如果javascript不是单线程的,那么明显的解决方案就是同步ajax请求的短暂超时。

0 个答案:

没有答案