|
|
1
5
你只能有两个连接,但通常你只需要一个发送,一个接收,甚至在IE中。 也就是说,你完全可以这么做,我们一直在做 WebSync . 解决办法在于子域。 需要注意的是,ie(和其他浏览器,虽然它们通常限制为6个请求,而不是2个)限制每个域的请求,但是这个限制是针对整个域的 排除子域 . 例如,可以同时有两个请求打开到“www.stackoverflow.com”,还有两个请求打开到“static.stackoverflow.com”。 现在,您必须对这种方法稍微小心一点,因为如果您从www子域向静态子域发出请求,这将被视为跨域请求,因此您立即被限制为不使用直接的xhr调用,但在这一点上,您仍然绕过了2 conn部分限制;jsonp、html5等,都是你绕过跨域限制的朋友。 编辑 使用>1个IE实例进行管理也会遇到同样的问题。此限制适用于所有实例。所以,如果您打开了两个浏览器,并且它们都使用comet,那么您将不得不打开两个长的轮询连接。如果你已经最大化了你的选项,你将把那些长的轮询请求连接到“comet.mysite.com”之类的东西,而你的非长的轮询请求将转到“mysite.com”。这是最好的,你将得到不进入通配符dns。 看看我们的 WebSync Demos ;它们在两个ie实例中工作,没有问题。如果您查看源代码,您将看到流连接的dns与主页不同;我们使用jsonp绕过跨域限制。 |
|
|
2
2
comet的主要思想是保持一个客户机到服务器的请求打开,直到需要响应为止。 如果您正确地设计了代码,那么您不需要同时打开超过2个请求。其工作原理如下:
关键是集中化和异步化客户端中的所有通信。所以你永远不需要有两个打开的请求。 但要直接回答你的问题, 不,没有其他的解决办法。 提高连接限制或减少使用的连接数。 |