Javascript 处理慢连接背后的客户端

Javascript 处理慢连接背后的客户端,javascript,ajax,Javascript,Ajax,我正在构建一个基于ajax的消息传递系统。其思想是,客户机将每隔X秒调用服务器,以获取最新消息和其他一些重要信息。应用程序在很大程度上依赖于交付给客户端的数据。我已经在各种连接上进行了测试,一切似乎都很正常。在一次演示测试运行期间,我们观察到一些客户端在应该显示来自服务器的信息的位置显示“未定义”文本。这种情况告诉我服务器响应被切碎了,或者类似于导致java脚本阻塞的事情 在报告问题的客户中,似乎只有一个共同点,那就是他们落后于慢速连接。大约有20个浏览器在十几台不同的机器上打开,并且都使用相同

我正在构建一个基于ajax的消息传递系统。其思想是,客户机将每隔X秒调用服务器,以获取最新消息和其他一些重要信息。应用程序在很大程度上依赖于交付给客户端的数据。我已经在各种连接上进行了测试,一切似乎都很正常。在一次演示测试运行期间,我们观察到一些客户端在应该显示来自服务器的信息的位置显示“未定义”文本。这种情况告诉我服务器响应被切碎了,或者类似于导致java脚本阻塞的事情

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

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

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


谢谢

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

即使连接很好,也总是有失败的风险;因此,你必须处理“失败”的案例;即,不显示“
未定义”

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

如果失败时间超过此时间,则会显示一条消息,如“您的连接有问题,可能有问题;如果没有Internet连接,应用程序将无法正常工作。”


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

在第一个请求完成之前,不会发送第二个请求。那部分已经处理好了。我认为增加暂停时间是我可以做的一个改变


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

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

我的开源工具可以帮上忙,但也有其他工具