标签: long-polling

在scala中实现长轮询并使用akka播放2.0

我正在分布式环境中在Play 2.0中实现长轮询.我理解的方式是,当Play获取请求时,它应该暂停更新的待处理通知,然后转到数据库以获取新数据并重复.我开始查看Play 2.0提供的聊天示例,但它是在websocket中.此外,它看起来不像是能够分发.所以我想我会用Akka的赛车.我采用了事件流实现并使用LookupClassification复制了我自己的实现.但是我很难知道我将如何收到消息(或者就此而言,应该是订户而不是ActorRef)?

EventStream实现:https: //github.com/akka/akka/blob/master/akka-actor/src/main/scala/akka/event/EventStream.scala

scala long-polling akka playframework playframework-2.0

13
推荐指数
1
解决办法
3732
查看次数

为多人JavaScript游戏实现后端服务器的最简单方法?(COMET/longpolling)

我一直在用JavaScript编写游戏,现在是时候让它成为多人游戏了.我想使用AJAX长轮询来获得当前的游戏状态,以及实现大厅.

服务器只需要执行基本功能,比如将游戏状态存储在mysql数据库中,检索游戏状态,并格式化记分板.

我认为用PHP编写它是最简单的,但由于它会产生的apache进程数量,这将是一个坏主意.

您有什么推荐的吗?我正在寻找最直接的方法.

编辑:StreamHub似乎很好,但社区版只允许10个并发用户.

comet web-frameworks long-polling

12
推荐指数
1
解决办法
3298
查看次数

"长轮询"是创建Web实时应用程序的最有效方式吗?

我想创建一个这样的应用程序:

http://collabedit.com/

创建这个实时应用程序的最有效方法是什么?

闪?长期民意调查?Http Streaming?或者是其他东西?

谢谢 ;)

javascript flash streaming comet long-polling

12
推荐指数
1
解决办法
6596
查看次数

如何在Spring MVC 3中使用Servlet 3 @WebServlet&async?

我想将servlet 3.0异步支持与spring MVC集成.就像是:

@RequestMapping("/chat")
@WebServlet(name="myServlet", asyncSupported=true)
public String getMessage(String userName) {
      ......
}
Run Code Online (Sandbox Code Playgroud)

可能吗?

java spring spring-mvc long-polling servlet-3.0

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

长轮询与Apple推送通知服务和Android C2DM

我正在构建一个具有一些实时约束的移动应用程序.因此,我转向stackoverflow获取建议和意见,并尝试确定在运行时更新应用程序状态的最佳解决方案:

  1. 依赖长轮询或直接连接到我的服务器
  2. 依靠Apple推送通知服务和Android C2DM

除了APNS和C2DM提供统一的界面以在应用程序运行时推送通知这一事实之外,可以说自定义解决方案(基于长轮询或直接连接)更灵活,更少依赖于延迟Apple和Android排队.

据我所知,我认为大多数争论源于成本比较,与在智能手机上打开连接相比,它为保持连接打开消耗了多少电池.

因此,我对两件事特别感兴趣:

  • 有关APNS和C2DM的经验
  • 有关在智能手机上保持TCP连接打开的所有含义的详细信息.

参考欢迎!谢谢!

android long-polling apple-push-notifications ios android-c2dm

12
推荐指数
1
解决办法
4365
查看次数

在什么情况下我的浏览器会尝试为多个请求重用TCP连接?

我正在使用Firefox,但我想知道浏览器一般如何决定这一点.

似乎当我在很短的时间内两次访问同一个URL时,我的浏览器会尝试为两个请求重新使用TCP相同的连接(这称为keep-alive).但是,当我访问两个不同的URL(但仍由同一服务器提供服务)时,浏览器有时会决定为每个请求打开一个新连接.显然,浏览器不使用每个URL的一个连接策略.

我问这个是因为我正在尝试实现一个使用长轮询的Web服务.我可以想象用户可能希望在同一浏览器的多个选项卡中打开此服务.但是,使用keep-alive,第二个长轮询请求在第一个完成之前不会被发送(至少在Firefox中),因为浏览器正试图将它们都推到同一个套接字中,这是我没想到的设计了这项服务.即使浏览器实现了管道衬里,在我响应第一个请求之前也无法响应第二个请求,因为HTTP要求我按顺序完成响应.

browser tcp http keep-alive long-polling

12
推荐指数
1
解决办法
5525
查看次数

Tornado阻止异步请求

使用Tornado,我有一个Get请求需要很长时间,因为它向另一个Web服务发出许多请求并处理数据,可能需要几分钟才能完全完成.我不希望这阻止整个Web服务器响应其当前所做的其他请求.

据我了解,Tornado是单线程并同步执行每个请求,即使它异步处理它们(仍然在那个位置上混淆).长进程的某些部分可能是暂停点,以允许服务器处理其他请求(可能的解决方案?).我在Heroku上运行它只有一个工作者,所以不确定如何转换为产生一个新的线程或多处理,我没有使用python的经验.

这里是我想要做的事:客户端发出GET调用来启动进程,那么我通过循环另一个get调用每5秒检查状态,并用新信息更新页面(长轮询也将工作,但运行进入同一问题).问题是启动长进程会阻止所有新的get请求(或新的长轮询会话),直到它完成为止.

是否有一种简单的方法可以启动这个长时间的呼叫,而不是让它在整个过程中阻止整个Web服务器?有没有什么我可以在代码中说.."暂停,处理待处理的请求然后继续"?

我需要在ProcessHandler上发起get请求.然后我需要继续能够在ProcessHandler运行时查询StatusHandler.

例:

class StatusHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    def get(self):
       self.render("status.html")

class ProcessHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    def get(self):
       self.updateStatus("0")
       result1 = self.function1()
       self.updateStatus("1")
       result2 = self.function2(result1)
       self.updateStatus("2")
       result3 = self.function3(result2)
       self.updateStatus("3")
       self.finish()
Run Code Online (Sandbox Code Playgroud)

python tornado long-polling

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

长轮询 - 消息系统

我正在考虑使用jQuery和PHP对消息系统进行一些长时间的轮询.我很想知道实现这一目标的最佳/最有效的方法.我基于这个简单的长轮询示例.

如果用户正坐在收件箱页面上,我想要提取任何新邮件.我见过的一个想法是last_checked在消息表中添加一列.PHP脚本看起来像这样:

query to check for all null `last_checked` messages
if there are any...
while(...) {
    add data to array
    update `last_checked` column to current time
}
send data back
Run Code Online (Sandbox Code Playgroud)

我喜欢这个想法,但我想知道别人怎么想.这是解决这个问题的理想方式吗?任何信息都会有所帮助!

要添加,网站上没有可用的设置数量,因此我正在寻找一种有效的方法.

php long-polling

12
推荐指数
1
解决办法
3693
查看次数

Visual Studio的浏览器链接功能是否能够使用Web套接字?

我知道SignalR用于使用注入的动脉脚本与客户端浏览器进行通信.我有一个似乎常见的问题,那就是我的浏览器的网络日志中填充了如下所示的条目:

.../arterySignalR /民意调查?运输= longPolling&connectionToken = ...

这告诉我SignalR已经回归到长轮询,而不是使用网络套接字.假设我们有一个支持Web套接字的浏览器,并且该浏览器在localhost上运行,那么SignalR默认不应该使用Web套接字吗?什么可能导致它回归长期民意调查?

long-polling websocket signalr browser-link

11
推荐指数
1
解决办法
1875
查看次数

使用Spring的DeferredResult进行长轮询

客户端定期调用异步方法(长轮询),向其传递一个股票代码的值,服务器使用该值来查询数据库并将对象返回给客户端.

我正在使用Spring的DeferredResult类,但是我不熟悉它的工作原理.请注意我如何使用symbol属性(从客户端发送)来查询数据库以获取新数据(见下文).

也许有更好的方法用于Spring的长轮询?

如何将symbol属性从方法deferredResult()传递给processQueues()

    private final Queue<DeferredResult<String>> responseBodyQueue = new ConcurrentLinkedQueue<>();

    @RequestMapping("/poll/{symbol}")
    public @ResponseBody DeferredResult<String> deferredResult(@PathVariable("symbol") String symbol) {
        DeferredResult<String> result = new DeferredResult<String>();
        this.responseBodyQueue.add(result);
        return result;
    }

    @Scheduled(fixedRate=2000)
    public void processQueues() {
        for (DeferredResult<String> result : this.responseBodyQueue) {
           Quote quote = jpaStockQuoteRepository.findStock(symbol);
            result.setResult(quote);
            this.responseBodyQueue.remove(result);
        }
    }
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc long-polling http-streaming server-sent-events

11
推荐指数
1
解决办法
7938
查看次数