处理慢速连接后的客户

时间:2009-07-23 10:48:40

标签: javascript ajax

我正致力于构建基于ajax的消息传递系统。这个想法是客户端将每X秒呼叫服务器以获取最新消息和一些其他关键信息。应用程序在很大程度上依赖于传递给客户端的数据。我已经在各种连接上测试过它,一切似乎都很完美。在一次演示测试运行期间,我们观察到一些客户端在应该显示来自服务器的信息的地方显示“未定义”文本。这种情况告诉我服务器响应被切断或类似的东西导致java脚本窒息。

似乎只有在报告问题的客户中常见的事情是他们落后于缓慢的连接。大约有20个浏览器在十几台不同的机器上打开,并且都使用相同的开关。

底线是,连接速度非常慢的客户端似乎存在问题。我已经为AJAX调用设置了超时,以匹配发送这些请求的频率。现在这个时间和发送呼叫的计时器是5秒。响应有效负载仅为150-160字节。

假设这是连接速度慢和超时的问题,处理这种情况的最佳做法和策略是什么?

由于

4 个答案:

答案 0 :(得分:1)

对于那种情况,超时听起来太短了。将超时增加到10-15秒,如果第一个请求尚未返回,则不发送第二个请求。内容的大小可能非常小,但这是一个延迟问题。

答案 1 :(得分:1)

即使连接很好,也总会有失败的风险;所以,你肯定要处理“失败”的情况;即,不显示“undefined”。

你可以想象一个系统会“默默地失败”一分钟(数据不会在页面上更新,但你不告诉用户)。

如果失败的时间超过此时间,则会显示“您遇到连接问题,可能出现问题;如果没有Internet连接,应用程序无法正常运行”的消息。

(如果用户使用wifi或基于移动设备的连接,这种情况可能经常发生)

答案 2 :(得分:0)

第二个请求不会发送,直到第一个请求完成。那部分已经得到了解决。我认为增加时间将是我可以做出的一个改变。

非常奇怪的是,如果调用成功并且执行达到为该HTML元素设置文本的点,则显示将仅显示“未定义”。这是我没有得到的部分。我已经尝试从服务器返回空字符串,即使那些在客户端被转换为空字符串,最坏的情况下,它们最终导致显示EMPTY字符串,这是应用程序的预期行为,在某些条件下,如果数据与某些条件不匹配,它应该清除显示中的值。

答案 3 :(得分:0)

在您的开发环境中使用可以模拟慢速连接并模拟高延迟连接的工具会很有帮助。这将允许您在开发环境中重现错误,并在发生时开始观察行为。

我的开源工具DonsProxy可以提供帮助,但也有其他工具。