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

长轮询与websocket在期望来自服务器端的一次性响应时的比较

邵献
2023-03-14

这正是我的案子。用户按下一个按钮,在服务器端启动一些复杂的计算,一旦答案准备好,服务器就向客户机发送推送通知。问题是,我们能说对于一次性响应的情况,长轮询比网络套接字更好吗?或者,除非我们担心过时的浏览器支持,如果我要从头开始这个项目,那么当涉及到推协议时,websockets应该总是比长轮询更好?

共有1个答案

越勇
2023-03-14

问题是,我们能说对于一次性响应的情况,长轮询比网络套接字更好吗?

不是真的。长时间轮询效率低(多个传入请求,服务器必须多次检查长时间运行作业的状态),特别是如果通常的时间周期足够长,您必须轮询多次。

如果给定的客户端页面只可能执行一次此操作,那么您可以选择任何一种方式。每种机制都有一些优点和缺点。

    null

备选案文2:

  • 发出http请求以启动长时间运行的操作。返回操作已成功启动的响应,以及可能用于将来查询的某种taskID。
  • 使用http“长轮询”来“等待”答案。由于这些请求可能会在收到响应之前“超时”,因此必须定期进行长时间轮询,直到收到响应为止。

备选案文3:

    null
    null
 类似资料:
  • 我想测量和比较长轮询和WebSocket之间的服务器性能。我用ratchet(PHP websockets)构建了一个简单的PHP应用程序,它只在控制台中输出数据(指南:http://socketo.me/docs/hello-world)。长轮询应用程序也是PHP,只生成随机数并将其记录在控制台中(本文:如何实现基本的“长轮询”?)。 有没有办法在不使用数据库的情况下对这些应用程序进行公平的比较

  • 我需要一种在java中记录这个XML响应的方法。当我从我的java发送请求时,这是返回的。我需要一种打印出响应描述的方法。 下面是我的java代码:

  • 问题内容: 用Docker Machine创建新机器后,出现以下 错误: 我怎样才能解决这个问题? 问题答案: docker-machine upgrade 会成功的 即使您不使用RC且计算机是新创建的,也可能会发生-就像对我一样。这可能是由于ISO缓存 问题。误差在评论thisthread. 如果Docker客户端为1.9.x并且服务器正在运行docker 1.8.x, 则会观察到错误消息。

  • 我有一个反向代理设置与nginx。 如何将从后端服务器发送到nginx的http请求(包括头)记录到文件中? 也许nginx http代理模块中的某个指令可以帮助我做到这一点。 但我找不到任何有用的指示。

  • 控制台中的结果如下: 我不明白为什么会发生这种情况。

  • 我想知道如何缓存来自Web服务器(返回json数据)的okHTTP响应? 你知道如果应用程序只需要在第一次运行时下载数据--然后只有在数据发生变化时才下载数据该怎么办吗?