标签: long-polling

long polling netty nio framework java

如何使用netty框架进行长轮询?比如说我拿了http://localhost/waitforx

但是waitforx是异步的,因为它必须等待一个事件?比如说它从阻塞队列中取出一些东西(只能在队列中的数据时获取).从队列中获取项目时,我想将数据发送回客户端.希望有人可以给我一些如何做到这一点的提示.

非常感谢

java asynchronous nio long-polling netty

10
推荐指数
1
解决办法
5790
查看次数

AJAX轮询与WebSockets移动性能

我目前正在Django开发一个网站,我想实现某种准实时更新系统.

由于这个站点是用于移动设备,我想知道定期轮询服务器进行更改(比如每5秒)和使用某种Websocket实现之间的性能比较ala http://codysoyland.com/2011/feb/6/evented-django-part-one-socketio-and-gevent /.

关于电池寿命,差异可以忽略不计?代码方面,似乎AJAX实现也会更简单.

django ajax long-polling websocket

10
推荐指数
1
解决办法
2766
查看次数

"xhr-polling"配置在socket.io中做了什么?

我有一个带socket.io的node.js服务器:

var io = require('socket.io').listen(app);

// assuming io is the Socket.IO server object
io.configure(function () { 
      io.set("transports", ["xhr-polling"]); 
      io.set("polling duration", 10); 
    });

io.sockets.on('connection', function(socket){
  console.log('connected: %s', socket.id);
  ...
}
Run Code Online (Sandbox Code Playgroud)

使用xhr-polling和10秒的轮询持续时间,这是否意味着每10秒钟会调用一个新连接?如果是这样,如果用户断开连接,我该如何跟踪用户?我在heroku上运行node.js.

long-polling node.js socket.io

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

Web套接字,长轮询,服务器发送事件和永久帧之间有什么区别?

我目前正在探索SignalR,这项技术支持传输(网络套接字,长轮询,服务器发送事件和永久帧).

我已经理解术语网络套接字和长轮询.但什么是Server-Sent Events和Forever Frame?

四者如何相互不同?

long-polling websocket server-sent-events signalr

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

实时抓取标记的instagram照片

我正在尝试实时下载贴有特定标签的照片.我发现实时api很无用,所以我使用长轮询策略.下面是伪代码,其中包含sublte错误的注释

newMediaCount = getMediaCount();
delta = newMediaCount - mediaCount;
if (delta > 0) {
    // if mediaCount changed by now, realDelta > delta, so realDelta - delta photos won't be grabbed and on next poll if mediaCount didn't change again realDelta - delta would be duplicated else ...
    // if photo posted from private account last photo will be duplicated as counter changes but nothing is added to recent
    recentMedia = getRecentMedia(delta);
    // persist recentMedia
    mediaCount = newMediaCount;
}
Run Code Online (Sandbox Code Playgroud)

第二个问题可以通过Set …

java long-polling instagram instagram-api

10
推荐指数
1
解决办法
1122
查看次数

在RxJava中使用"skipWhile"和"repeatWhen"来实现服务器轮询

我真的很喜欢RxJava,它是一个很棒的工具,但有些时候很难理解它是如何工作的.我们在Android项目中使用Retrofit和RxJava,并且有以下用例:

我需要轮询服务器,重试之间有一些延迟,而服务器正在做一些工作.服务器完成后,我必须提供结果.所以我用RxJava成功完成了它,这里是代码片段:我用"skipWhile"和"repeatWhen"

Subscription checkJobSubscription = mDataManager.checkJob(prepareTweakJob)
        .skipWhile(new Func1<CheckJobResponse, Boolean>() {

            @Override
            public Boolean call(CheckJobResponse checkJobResponse) {
                boolean shouldSkip = false;

                if (SHOW_LOGS) Logger.v(TAG, "checkJob, skipWhile, jobStatus " + checkJobResponse.getJobStatus());

                switch (checkJobResponse.getJobStatus()){
                    case CheckJobResponse.PROCESSING:
                        shouldSkip = true;
                        break;
                    case CheckJobResponse.DONE:
                    case CheckJobResponse.ERROR:
                        shouldSkip = false;
                        break;
                }
                if (SHOW_LOGS) Logger.v(TAG, "checkJob, skipWhile, shouldSkip " + shouldSkip);

                return shouldSkip;
            }
        })
        .repeatWhen(new Func1<Observable<? extends Void>, Observable<?>>() {
            @Override
            public Observable<?> call(Observable<? extends Void> observable) {
                if (SHOW_LOGS) Logger.v(TAG, "checkJob, repeatWhen " + …
Run Code Online (Sandbox Code Playgroud)

networking android long-polling rx-java retrofit

10
推荐指数
1
解决办法
3417
查看次数

使用Tornado和Prototype进行异步COMET查询

我正在尝试使用Tornado和JS Prototype库编写简单的Web应用程序.因此,客户端可以在服务器上执行长时间运行的作业.我希望,这项工作以异步方式运行 - 以便其他客户可以查看页面并在那里做一些事情.

在这里我得到了:

#!/usr/bin/env/ pytthon

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options

import os
import string
from time import sleep
from datetime import datetime

define("port", default=8888, help="run on the given port", type=int)

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("templates/index.html", title="::Log watcher::", c_time=datetime.now())

class LongHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    def get(self):
        self.wait_for_smth(callback=self.async_callback(self.on_finish))
        print("Exiting from async.")
        return

    def wait_for_smth(self, callback):
        t=0
        while (t < 10):
            print "Sleeping 2 second, t={0}".format(t)
            sleep(2)
            t += 1
        callback()

    def on_finish(self):
        print ("inside …
Run Code Online (Sandbox Code Playgroud)

python ajax comet tornado long-polling

9
推荐指数
1
解决办法
6330
查看次数

Angularjs长期投票

我试图在Angularjs中执行一个简单的长轮询请求 - 我发出一个GET请求,它会挂起,直到服务器响应.然后我再次提出请求并等待下一个响应 - 依此类推.

但是,由于某种原因,代码非常不可靠,并且错过了从服务器发送的大约80%的响应.

以下是我的代码:

main.messages=[];
...
main.poll=function(){
  $http.get('http://localhost:8080/message')
  .success(function(data){
    console.log(data);
    main.messages.push(data);
    main.poll();
  })
  .error(...)
};
Run Code Online (Sandbox Code Playgroud)

我有什么明显的遗失吗?

服务器可以检测到浏览器已连接,服务器确实发送了响应,但上面的代码没有得到响应(没有控制台输出也没有错误).我尝试用postman(chrome扩展)发出这个请求,并且长轮询在那里工作得很好所以我认为这个问题就在这里.

更新:问题仅发生在Google Chrome上,并且仅当有多个标签同时执行长轮询时才会出现问题.使用长轮询创建和关闭新选项卡时会出现一些看似随机的行为.

javascript long-polling angularjs

9
推荐指数
1
解决办法
5667
查看次数

使用Flask进行Python长轮询

我正在尝试使用Flask Framework在JQuery和Python上进行长时间的轮询.

在PHP之前完成了长时间的轮询,我试图以同样的方式进行:

具有while(true)循环的脚本/函数,定期检查更改,例如数据库中每0.5秒,并在发生更改时返回一些数据.

所以在我的ini .py中我创建了一个app.route to/poll for JQuery to call.JQuery为它提供了有关客户端当前状态的一些信息,并且poll()函数将其与数据库中当前的状态进行了比较.循环结束并在观察到变化时返回信息.

这是python代码:

@app.route('/poll')
def poll():
client_state = request.args.get("state")

    #remove html encoding + whitesapce from client state
    html_parser = HTMLParser.HTMLParser()
    client_state = html_parser.unescape(client_state)
    client_state = "".join(client_state.split())

    #poll the database
    while True:
        time.sleep(0.5)
        data = get_data()
        json_state = to_json(data)
        json_state = "".join(data) #remove whitespace

        if json_state != client_state:
            return "CHANGE"
Run Code Online (Sandbox Code Playgroud)

问题是,当上面的代码开始轮询时,服务器似乎被重载和其他Ajax调用,而其他请求,如使用JQuery将"加载"图像加载到html是无响应和超时.

为了完成起见,我在这里包含了JQuery:

function poll() {

queryString = "state="+JSON.stringify(currentState);

$.ajax({
    url:"/poll",
    data: queryString,
    timeout: 60000,
    success: function(data) {
        console.log(data);
        if(currentState == null) …
Run Code Online (Sandbox Code Playgroud)

python long-polling flask

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

带有Socket.io的Node.js - Long Polling失败并抛出"code":1,"message":"Session ID unknown"响应

我坚持为什么移动到IIS7服务器的nod​​e.js应用程序现在失败了.我知道IIS7不支持Web套接字,但我的理解是,如果Web套接字不可用,socket.io将回退到长轮询.所以现在当用户试图按下通常需要套接字或长轮询的特定按钮时,我会得到这样的结果:

XHR finished loading: POST "https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777964357-6&sid=QWsESi0c9ih7WMWKAAAC".
GET https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777963494-5&sid=QWsESi0c9ih7WMWKAAAC 400 (Bad Request)
XHR finished loading: GET "https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777963494-5&sid=QWsESi0c9ih7WMWKAAAC".
OPTIONS https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777965127-7&sid=QWsESi0c9ih7WMWKAAAC 
XMLHttpRequest cannot load https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777965127-7&sid=QWsESi0c9ih7WMWKAAAC. Invalid HTTP status code 400
Run Code Online (Sandbox Code Playgroud)

当我点击GET或XMLHttpRequest时,我可以看到响应是"code":1,"message":"Session ID unknown",我不明白,因为我可以看到SID.当我单击列出的选项失败代码时,我发现问题来自Request.prototype.create,即xhr发送:

xhr.send(this.data);
Run Code Online (Sandbox Code Playgroud)

有谁知道可能导致这些事情的原因是什么?

任何澄清将不胜感激!

非常感谢!

javascript sockets iis-7 long-polling node.js

9
推荐指数
4
解决办法
7940
查看次数