小编dal*_*las的帖子

长轮询XMLHttpRequests和间歇性网络连接的问题

我已经实现了一个长轮询连接,允许我使用Tomcat Web服务器和前端的标准javascript进行服务器端推送(彗星).为了保持连接,我有一个简单的保持活动循环,一旦最后一个完成/失败就会启动一个新的请求.

绝大多数时候,这种连接完全正常,并且像我期望的那样保持活力.但是,我注意到当用户的互联网连接断开时(例如,他们断开VPN连接,拔掉他们的以太网等)并且我有一个待处理的XMLHttpRequest出服务器,我没有得到任何失败的迹象.因此,连接无声地死亡,我不知道它发生了,除非我经常向服务器发送请求以测试连接(这似乎打败了使用长轮询的目的).

这是我在Chrome中看到的请求对象,当它死于这个沉默的死亡时:

request: XMLHttpRequest
    onabort: function ()
    onerror: function ()
    onload: null
    onloadend: null
    onloadstart: null
    onprogress: null
    onreadystatechange: function ()
    readyState: 1
    response: ""
    responseText: ""
    responseType: ""
    responseXML: null
    status: [Exception: DOMException]
    statusText: [Exception: DOMException]
    upload: XMLHttpRequestUpload
    withCredentials: false
Run Code Online (Sandbox Code Playgroud)

我有三个监听器(onabort,onerror,onreadystatechange)设置来警告消息,如果它们被解雇,但每当我连接到服务器时,我什么也得不到.这是我正在形成请求的方式:

var request = new XMLHttpRequest();

//url is just the url to my servlet to handle this
request.open("GET", url, true);

//handlestatechange is just my standard handling code 
//that I've put an alert at the top of
request.onreadystatechange …
Run Code Online (Sandbox Code Playgroud)

javascript comet xmlhttprequest

7
推荐指数
1
解决办法
4190
查看次数

标签 统计

comet ×1

javascript ×1

xmlhttprequest ×1