当前位置: 首页 > 知识库问答 >
问题:

在我的情况下,AJAX或socket.io更有意义?

洪育
2023-03-14

我一直在使用AJAX做一些事情,有时每秒钟需要几个帖子。每个post返回一个JSON对象(由post到的PHP文件生成,大约11000字节),平均延迟在30ms到250ms之间,这取决于我是在wifi上还是在有线上,但是大约每1/15次调用它就会增加到大约4000ms。我正试图找到一种方法来解决这个问题,目前我看到了两个选择:

>

  • 在AJAX调用上抛出一个超时,并让它调用一个GET on fail(POST应该仍然通过,返回的行程总是超时)或...

    简化整个过程,学习node.js,这样我就可以使用websockets来纠正这个问题。

    由于我对websockets还没有任何经验,我希望得到一些关于下一步采取的最佳行动的反馈。谢谢你的意见。

    如果有帮助的话,我很可能会用一些鬼鬼祟祟的编码将返回的有效载荷减少到1/15的大小。这会产生影响吗?

  • 共有1个答案

    须巴英
    2023-03-14

    WebSockets是一个很好的选择!实际上,使用SocketIO非常简单,而且学习曲线很浅。

    • 由于连接保持打开状态,您的请求将跳过DNS查找和路由,以获得较低的延迟。这意味着您发出的每个POST请求的开销要低得多。
    • 如果您希望将数据推送给用户,WebSockets实际上是这样做的方法。Ajax轮询正在过时。

    也就是说,您必须将后端逻辑移植到JavaScript。您必须将部署策略更改为支持节点应用程序的服务器。您将不得不学习一个新的环境--也可能会有一些开销。

      null
     类似资料:
    • 问题内容: 我看到了一些这样的代码: 我以为应该有一个? 为什么这段代码这样做呢? 问题答案: 如果您希望当前执行的方法仍引发异常,同时允许适当地清理资源,则这很有用。下面是处理调用方法中的异常的具体示例。

    • 我正在尝试将Cucumber集成到现有的Spring Boot项目中 当前项目是单个Maven模块 单元测试(不含Spring上下文)和集成测试(含Spring上下文)组合在同一个测试文件夹中。 我想做的是能够调整我的单元测试和集成测试。 但是一旦我添加了依赖项(为了能够在规范旁边运行Spring上下文),它就要求文件夹中的所有测试都用注释。 下面是我的测试套件,配置为获取测试规范。 是否可以将两

    • 由于TypeScript 3.0,新的top type unknown可作为任何类型的类型安全对应项使用。 我真的很喜欢这种类型,因为它使代码更加健壮。 我的主要问题是,TypeScript(显然)在运行时没有为接口提供-特性。如果可能的话,此代码将非常有效: 我的问题 如何以有意义的方式使用此类型,而无需检查接口的每个属性?

    • 我正在为朋友构建一个小型聊天应用程序,但不确定如何及时获取信息,而不是像强制刷新页面那样手动或简单。

    • 问题内容: 我正在使用nodejs和expressjs框架从服务器下载文件’jsonFile.json’。 我正在使用以下代码 但这会导致对整个文件内容的响应。 我期望浏览器要我将文件保存在本地磁盘中。 如何将文件保存在本地磁盘中? 问题答案: 让Express设置正确的标头,然后执行以下操作: (doc) 编辑: 由于您是通过AJAX调用进行请求的,因此您必须更改设置,因为大多数(全部?)浏览器

    • 我们正在进行一项实验,以衡量服务工作者的利益。作为其中的一部分,我们正在记录pageLoadTime和服务工作者状态。其思想是,控制器状态为激活状态的数据将被视为通过服务工作者提供的页面,未安装服务工作者的数据将控制器视为空,因此没有服务工作者状态。这样我们就可以将pageLoadTime与 这是知道该页面由SW提供服务的正确方法吗?我想到的一个问题是,如果SW在两者之间被杀死,并向我们提供错误的