标签: long-polling

Python中的非消息队列/简单长轮询(和Flask)

我正在寻找一个简单的(即,不是一个需要我设置一个单独的服务器来处理消息队列)的方法来对运行计算并生成图形的小型Web界面进行长轮询.这就是我的web界面需要做的事情:

  1. 用户在Web界面中请求图形/数据
  2. 服务器运行一些计算.
  3. 当服务器正在运行计算时,一个小容器会更新(可能通过AJAX/jQuery)计算进度(类似于你在打印中使用打印的那个(即打印'计算密度函数......'))
  4. 计算完成和图形显示给用户.

由于计算都在服务器端完成,我不确定如何轻松设置它.显然,我想设置一个REST API来处理轮询,这在Flask中很容易.但是,我不确定如何检索实际更新.显而易见的是,虽然这个目的很复杂,但解决方案是设置消息传递队列并进行一些长轮询.但是,我不确定这对于这么简单的事情是否正确.

这是我的问题:

  1. 有没有办法使用文件系统执行此操作?性能不是一个大问题.AJAX/jQuery可以从文件中查找消息吗?将进度保存到某些.json文件?
  2. 酸洗怎么样?(我真的不太了解酸洗,但也许我可以腌制消息字典,它可以通过处理轮询的API读取).
  3. 投票甚至是正确的方法吗?是否有更好或更常见的模式来处理这个问题?

我有一种感觉,我过于复杂,因为我知道这种事情在网络上很常见.我经常看到发生的事情,并且在进行某些计算时会运行一些"loading.gif"图像(例如,在Google Analytics中).

谢谢你的帮助!

python long-polling flask

25
推荐指数
2
解决办法
1万
查看次数

如何确定SignalR客户端的服务器断开连接?

问题是SignalR JavaScript客户端在与服务器的连接丢失时如何检测?

谢谢你的回复!

javascript long-polling signalr

24
推荐指数
6
解决办法
2万
查看次数

如何在ASP.NET MVC中进行长轮询AJAX请求?

有谁知道如何在ASP.NET MVC中编写长轮询AJAX请求(用于服务器PUSH通知)?每当我这样做时,似乎只有最后一个打开窗口的浏览器才会收到通知.好像IIS/ASP.NET正在取消最后一个请求,因为它已挂起或其他什么.

ajax asp.net-mvc jquery long-polling

22
推荐指数
1
解决办法
2万
查看次数

RxJava + Retrofit长轮询

我的问题是我无法获得无限的流Retrofit.在我获得初始poll()请求的凭证后 - 我做了初始poll()请求.如果没有更改,则每个poll()请求在25秒内响应,如果有任何更改,则每个poll()请求更早 - 返回changed_data [].每个响应都包含timestamp下一个轮询请求所需的数据 - 我应该在每个poll()响应之后执行新的poll()请求.这是我的代码:

getServerApi().getLongPollServer() 
  .flatMap(longPollServer -> getLongPollServerApi(longPollServer.getServer()).poll("a_check", Config.LONG_POLLING_SERVER_TIMEOUT, 2, longPollServer.getKey(), longPollServer.getTs(), "") 
   .take(1) 
   .flatMap(longPollEnvelope -> getLongPollServerApi(longPollServer.getServer()).poll("a_check", Config.LONG_POLLING_SERVER_TIMEOUT, 2, longPollServer.getKey(), longPollEnvelope.getTs(), ""))) 
   .retry()
   .subscribe(longPollEnvelope1 -> {
   processUpdates(longPollEnvelope1.getUpdates());
});
Run Code Online (Sandbox Code Playgroud)

我是RxJava的新手,也许我不明白,但我无法获得无限的流.我接到3个电话,然后是onNext和onComplete.

PS也许有更好的解决方案在Android上实现长轮询?

android long-polling rx-java retrofit

20
推荐指数
1
解决办法
2507
查看次数

长轮询/ HTTP流媒体一般问题

我正在尝试使用创建一个理论上的网络聊天应用程序,我已经阅读了有关长轮询和http流的内容,并且我设法应用了文章中介绍的大多数原则.然而,有两个主要的事情我仍然无法理解.

随着长轮询

  • 服务器如何知道何时发送更新?是否需要不断查询数据库或有更好的方法吗?

使用HTTP Streaming

  • 如何在Ajax连接期间检查结果是否仍处于活动状态?我知道jQuery的successajax调用函数,但是如何在连接仍在进行检查数据?

我会感激任何和所有的答案,谢谢你提前.

php jquery comet long-polling http-streaming

19
推荐指数
2
解决办法
6399
查看次数

使用SignalR和传输模式长轮询时,Asp.net会话永不过期

我们有一个使用SignalR作为其通知机制的Web应用程序.问题是当我们使用IE浏览我们的Web应用程序时,SignalR使用Long Polling作为其传输类型,因此将请求发送回我们的Web服务器,因此Session永远不会过期,无论多长时间浏览器空闲.

我们在想,也许我们可以在Global.asax中捕获请求并查看它们是否来自SingalR并将会话超时设置为剩余时间(我不认为这是一个简单的解决方案).

我们缺少其他任何解决方案吗?

asp.net session internet-explorer long-polling signalr

19
推荐指数
2
解决办法
1895
查看次数

长轮询和使用Comet之间有区别吗?

我正在实现一个需要实时更新的系统.我一直在寻找某些场景,其中就是彗星.实现这一点,我认为这与传统的长轮询不同.

在这两种情况下,您都必须发送请求,然后服务器发回响应.在浏览器中解释响应,然后开始新请求.

那么为什么我要使用彗星,如果在这两种情况下我都需要打开和关闭连接.

javascript comet long-polling

17
推荐指数
3
解决办法
7212
查看次数

是否有真正的服务器推送http?

我知道有办法伪造它,轮询(或长轮询),但有没有办法让服务器联系浏览器推出信息?

轮询选项会浪费服务器上的资源,并且取决于服务器可以将其锁定(例如apache和iis).

似乎很多网站都使用长轮询来伪造服务器端推送机制而不是http.将一个真正的推送协议内置到浏览器中不是更好吗?

哪些选项对服务器友好,可以将(虚假或其他)信息推送到Web浏览器?

browser push http long-polling

17
推荐指数
1
解决办法
2万
查看次数

WebSockets的.丢失互联网,保持活跃的消息,应用程序架构等

嗯,这里有关于websockets的信息.技术本身是惊人的,这一点毫无疑问.在我开始在我的应用程序中使用它们之前,我只想让社区回答以下问题:

"...为了保持存在,应用程序可以在WebSocket上发送保持活动的消息,以防止它因空闲超时而被关闭......"

"...理想情况下,WebSocket的未来版本将支持超时发现,因此它可以告诉应用程序保持活动消息的时间......"

  1. 感觉就像似曾相识.之前我们不得不一次轮询服务器%period_time%以获取所需的更新信息.对于websockets,我们必须使用keep-alive消息在%period_time%上轮询websocket服务器,以确保Internet连接仍处于活动状态/ websocket服务器仍在工作.有什么好处?

    关于这些保持活跃的消息还有另外一件事.Websocket协议的优点是使用比HTTP(S)更少的流量.如果我们发送保持活跃的消息,似乎流量优势消失了.或者可能不是?

  2. 如果我使用websockets,我应该如何处理我的应用程序中的互联网丢失?我的意思是当互联网连接突然丢失时的真实情况(我的意思是没有发生"navigator.offline"事件).我应该使用某种setTimeout函数来查找保持活动消息,还是有更好的方法来处理这种情况?

  3. REST让我们清楚地了解应用程序应该如何工作以及请求应该如何.在websocket驱动的应用程序中执行此操作的最佳方法是什么?我应该用request.action字段(例如)JSON编码的消息吗?应用程序应该如何执行PUT请求?REST模型中有URL资源来处理这个问题,所以我应该使用这些方法的组合,还是可以简化?

javascript html5 xmlhttprequest long-polling websocket

17
推荐指数
2
解决办法
1万
查看次数

Nginx + PHP:在取消请求时停止进程

我有Nginx 1.4.4和PHP 5.5.6.我正在进行长轮询请求.问题是,如果我取消通过Ajax发送的HTTP请求,请求仍在处理(它们不会停止).我在文件末尾用PHP mail()函数测试了它,而邮件仍然没有停止文件).

我很担心,因为我认为它可能导致服务器崩溃,因为未关闭的请求负载很高.是的,我试过ignore_user_abort(false);但没有变化.有可能我应该在Nginx中改变一些东西吗?

  location ~ \.php$ {    
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
  }
Run Code Online (Sandbox Code Playgroud)

php nginx long-polling

17
推荐指数
1
解决办法
3102
查看次数