标签: long-polling

WebSockets versus Long-Polling versus TCP Scalability/Ease of Use

I'm writing a backend for a mobile web-app based in Java and I was wondering as far as scalability and ease of use go what are the pros and cons associated with using WebSockets versus Long-Polling solutions like comet. Another option would also be implementing my own solution using TCP. From what I've read it seems that you need to run Long-polling solutions on dedicated servers as they don't run well in Tomcat/Jetty when you start dealing with large numbers …

java long-polling websocket

4
推荐指数
1
解决办法
3550
查看次数

Ajax长轮询无法正常工作

我正在使用MVC 2中的长轮询开发一个简单的陌生人聊天应用程序.如果我打开应用程序不同的浏览器,它在我的开发机器上工作正常..我的意思是如果我在IE和Mozilla中加载应用程序,它工作正常

如果我在浏览器的两个选项卡中使用该应用程序(例如:IE),则不会从两个选项卡中触发长轮询...我的意思是,有一个开始按钮来启动聊天,这会触发长时间轮询.我可以看到它在调试时调用动作..而我的问题是,当我从第一个选项卡中单击启动按钮时,它会触发ajax请求(长轮询(此请求在服务器上等待,直到另一个请求来))然后我单击在选项卡2中的启动按钮,它不会触发ajax请求,直到从服务器返回第一个请求(超时后).

为什么会这样?我阅读像浏览器将阻止多个ajax请求..这是一个原因吗?..如果我使用不同的浏览器,它工作正常.只有在同一个浏览器中选择了两个选项卡才会出现问题

asp.net-mvc jquery long-polling asp.net-mvc-2 long-integer

4
推荐指数
1
解决办法
1796
查看次数

开始"长轮询"

我想开始在我的网站上实现一些"长轮询"技术.

基本上我需要一个主要功能,刷新HTML列表是否已将新数据添加到数据库.

对于我的设置,我有一个带LAMP环境的入门级VPS服务器.我知道PHP,JS和我熟悉Unix系统.

什么是正确的技术来实现一些长期的民意调查效果?

非常感谢任何投入

xmpp long-polling node.js

4
推荐指数
1
解决办法
3824
查看次数

socket.io强制断开XHR轮询

我有一个客户端/服务器应用程序使用服务器上的nodejs和socket.io作为连接机制.由于与我的应用程序相关的原因,我希望每个浏览器只有一个活动连接,并拒绝来自其他选项卡的所有连接,这些连接可能会在会话期间稍后打开.这个伟大的工程使用WebSockets,但是如果的WebSockets不是由浏览器和XHR轮询支持来代替,断开不会发生,因此,如果用户只需刷新页面,这不被解释为再连接(我有一个延迟重新连接和会话恢复),但作为一个新选项卡,在连接中结束被拒绝,因为此相同选项卡生成的旧连接仍处于活动状态.

我正在寻找一种方法,以便在发生刷新时从客户端有效地结束连接.我已经尝试绑定到客户端beforeunload并调用socket.disconnect()它,并且还发送了一条消息,socket.emit('force-disconnect')并且触发了与服务器的断开连接,但没有成功.我在这里错过了什么吗?感谢您的帮助!

我已经阅读了这个问题,并且发现它对我的特定情况没有用.

long-polling node.js socket.io

4
推荐指数
1
解决办法
5468
查看次数

使用jQuery和PHP实现长轮询

我想建立一个基于JavaScript(jQuery将用于AJAX)和PHP的聊天.

我听说这样做的好方法是使用长轮询.

我理解这个想法,但我不知道如何在服务器端实现它.

无限循环听起来像个坏主意.

php jquery chat comet long-polling

4
推荐指数
1
解决办法
2308
查看次数

捕获瓶子服务器错误

我试图让我的瓶子服务器,以便当游戏中的一个人注销时,每个人都可以立即看到它.当我使用长轮询时,会向所有用户打开请求.

我遇到问题的一点是捕获当用户从长轮询中离开页面时抛出的异常,该轮询不能再连接到页面.错误消息在这里.

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gevent/pywsgi.py", line 438, in handle_one_response
    self.run_application()
  File "/usr/lib/python2.7/dist-packages/gevent/pywsgi.py", line 425, in run_application
    self.process_result()
  File "/usr/lib/python2.7/dist-packages/gevent/pywsgi.py", line 416, in process_result
    self.write(data)
  File "/usr/lib/python2.7/dist-packages/gevent/pywsgi.py", line 373, in write
    self.socket.sendall(msg)
  File "/usr/lib/python2.7/dist-packages/gevent/socket.py", line 509, in sendall
    data_sent += self.send(_get_memory(data, data_sent), flags)
  File "/usr/lib/python2.7/dist-packages/gevent/socket.py", line 483, in send
    return sock.send(data, flags)
error: [Errno 32] Broken pipe
<WSGIServer fileno=3 address=0.0.0.0:8080>: Failed to handle request:
  request = GET /refreshlobby/1 HTTP/1.1 from ('127.0.0.1', 53331)
  application = <bottle.Bottle object at …
Run Code Online (Sandbox Code Playgroud)

python long-polling bottle python-2.7

4
推荐指数
1
解决办法
1249
查看次数

CouchDB Last Seq更改Feed

我想我在这里做错了,也许有人可以澄清一下.我有一个应用程序长期轮询CouchDB(通过nodejs),它使用更改源.当我的应用程序首次轮询更改提要时,它不知道last_seq是什么,所以我刚刚开始使用自= = 0轮询,获取last_seq然后再使用since = last_seq进行轮询.

但是,我遇到了一个问题.由于我的数据库已经添加了更多文档,因此更改列表变得非常长,当我使用since = 0请求更改时,响应似乎被切断,我没有得到响应中的last_seq.因此,如果没有last_seq,我就无法提出后续请求.

有没有办法获得last_seq而不从一开始就获得AAAAALLLL的变化?是否有某种方法可以经常截断更改Feed?

couchdb feed long-polling

4
推荐指数
1
解决办法
970
查看次数

Ajax轮询聊天在快速聊天时在消息接收器前端获得重复

我使用以下方法开发了一个javascript聊天(后端的php):

1) long-polling to get new messages for the receiver 
2) sessionStorage to store the counter of messages  
3) setInterval to read new messages and if sessionStorageCounter < setIntervalCounter then the last message is shown to receiver.
4) javascript to create,update and write the chat dialogues
Run Code Online (Sandbox Code Playgroud)

该模块工作正常,但当用户快速聊天时,接收者的前端会收到两到三条相同的消息,(计数器都不会失败,查询也不会提供双重插入).

代码似乎是正确的(这就是我不提供代码的原因),因此间隔延迟可能是原因(在减少间隔延迟时,没有任何变化).

您是否认为上述架构是一种不好的做法,您认为哪种架构可以消除错误?

javascript ajax setinterval session-storage long-polling

4
推荐指数
1
解决办法
256
查看次数

在Rails应用程序中进行长轮询

我的应用程序有一个页面,用户必须在该页面上相对实时地查看如何处理2个步骤.

现在这是通过ajax短轮询完成的.我想把它改成一些服务器重量较少的技术,我选择Faye gemajax long-polling.
Ajax长轮询更容易实现,不需要任何服务器入侵.它将需要4个ajax请求(用于完成2个步骤的页面).
Faye gem将发送3个请求,这并不是很少.它需要我设置我的nginx-passenger服务器,并且更难以实现和支持.

我会选择ajax长轮询,但我听说它需要一个完整的Rails实例运行,而请求是长轮询的,这将耗尽我的RAM.另一方面,从这个如何生产的rails服务器工作?我知道Rails在长轮询中可能没有这个问题.那么,这是真的, - 来自多个客户端的ajax长轮询需要许多并发应用程序处理(这可能会占用我的一些资源,不确定哪些)?

ruby-on-rails passenger long-polling websocket faye

4
推荐指数
1
解决办法
4836
查看次数

ob_implicit_flush(),flush(),ob_flush() - 不在远程服务器上工作

如果我从XAMPP上的本地服务器加载此脚本的chrome:

header("Content-Type:text/plain");

set_time_limit(0);

$max = 40;
for ($i = 0; $i < $max; $i++) {
    $response = array(  'server time: ' . date("h:i:s", time()), 'progress' => round($i/$max*100));
    echo json_encode($response);
    ob_flush();
    flush();
    sleep(1);
}
ob_clean();
Run Code Online (Sandbox Code Playgroud)

它按预期工作,每秒页面显示一个新的响应.但是,当我将其上传到我的远程服务器(运行相同版本的php)时,它会等到整个脚本完成后再显示输出.在非常长的脚本上,它每30-60秒左右更新一次输出.

正如标题所示,我尝试使用所有不同的刷新功能,但没有任何作用.我的本地服务器和远程服务器的php.ini可能有些不同,但我不知道是什么.

请帮忙.

- -编辑 - -

我一直在做更多的测试.我注意到它确实只更新每4096个字节,这恰好是我的远程服务器的'output_buffering'的php ini值.但是,出于某种原因,如果我将output_buffering更改为"1"或"关闭",则不会发生任何变化.它仍然只更新每4096个字节.

我正在同一浏览器上的不同服务器上测试2个相同的脚本.

php flush long-polling

4
推荐指数
2
解决办法
3705
查看次数