标签: comet

COMET优于长请求轮询?

我一直想知道使用COMET /推送技术是否真的有利于更简单的轮询和长请求,其中服务器将等待一定的最大时间来发生新事件,然后告诉客户没有发生任何事情.

这两种技术都有类似的客户端延迟,虽然常见的知识是长期请求更糟糕,因为它们需要建立新的连接,还有一个事实是HTTP保持活着 - 所以最后两者似乎产生了非常相似的流量/负载量.

那么使用COMET有一些明显的优势吗?

javascript ajax comet

6
推荐指数
1
解决办法
1862
查看次数

实现COMET客户端

我已经了解了COMET流媒体是什么,以及让它在主流浏览器中运行所需的各种黑客攻击.遇到的问题似乎有两个:1.服务器能够支持许多持久连接2.实现JS功能

我有一个应用程序,我需要执行COMET流.我已经解决了上面的第一个问题 - 我有一个自定义服务器运行,当它以块的形式到达时提供更新.我想现在能够使用JS连接到此URL,因此我可以收到更新.

我可以使用一个简单的COMET库吗?我看到了Orbited项目.我可以使用orbited的客户端JS来执行此操作吗?我需要在后端执行哪些修改?

javascript streaming comet

6
推荐指数
1
解决办法
508
查看次数

可以像Comet的http漫长等待一样使用XMPP吗?

XMPP能否以与反向Ajax模式类似的方式应用?它可以用来实现像Comet一样的长时间等待吗?是否有使用XMPP这种技术的例子?

ajax xmpp comet reverse-ajax

6
推荐指数
1
解决办法
2567
查看次数

如何实时检索更新的记录?(推送通知?)

我正在尝试在rails电子商务应用程序上创建一个ruby,潜在客户将能够下订单,商店所有者将能够实时接收订单.最终订单将被记录到数据库中(当时是SQLite),并且店主将打开一个浏览器窗口,新订单将在订单完成后出现.(应用程序信息:我正在使用HOBO rails框架,并计划在Heroku中托管应用程序)

我现在正在考虑使用最好的技术来实现这一点,因为预计应用程序会有很多用户发送大量订单:

1)每个浏览器窗口每隔X分钟刷新一次页面,连续轮询服务器以获取新记录(新订单).当然,这会给服务器带来沉重的负担.

2)如上所述,但用某种AJAX框架轮询服务器.

3)使用某种服务器推送技术,如"彗星"异步消息传递.找到Juggernaut,唯一的问题是它使用Flash和自定义端口,这可能是一个问题,因为我的应用程序应该可以在企业防火墙和NAT后面访问.

4)我也在检查node.js框架,对于这种异步消息传递似乎是有效的,尽管Heroku不支持它.

哪种方法是实现此类功能的最有效方法?还有其他方法我没有想过吗?

感谢您的时间和帮助!

ajax ruby-on-rails comet heroku node.js

6
推荐指数
1
解决办法
1439
查看次数

6
推荐指数
1
解决办法
331
查看次数

如何使用长轮询(最好没有Comet或node.js)?

假设我正在同步HTML页面上的文本,存储在localStorage中,从计算机A到计算机B.当用户编辑计算机A上的文本时,我向服务器发送请求,并告诉它更改了哪些文本.有什么方法可以让服务器告诉计算机B有新文本,没有计算机B必须继续检查?我读过有关Comet的内容,但我正在尝试不使用任何库.有办法吗?另外,如果你要推荐Comet,你能举一个使用普通JavaScript和Comet的简单例子吗?

我有个主意,但我不知道它是否有效.在计算机B上,我发送一次请求,让服务器的文件继续延迟响应,直到有一些新文本.这样,它就像长轮询,但请求最终会超时.如果有一种方法可以将超时设置为永远,那么这将变得更加容易.那么,任何人都有任何想法?

PS-我想只使用JavaScript和PHP,并尝试避免使用库.尽管如此,如果您知道可以使用JS和PHP执行此操作的库,请告诉我.

此外,我知道有这样的问题,但我发现那里的答案并不令人满意.

哦,如果有人知道这里的聊天是如何工作的,你能告诉我吗?

tl; dr:我想从服务器向HTML页面发送请求,或者让HTML发送一个请求,该请求保持活动状态直到创建适当的响应.

javascript php comet

6
推荐指数
1
解决办法
856
查看次数

PHP Jquery:聊天系统,这是什么理想的框架?

我想为我的网站实现聊天系统.功能将与Facebook聊天非常相似.聊天将是一对一的.

我知道如何使用PHP,MySql和使用JQuery构建聊天系统.但我担心的是,从长远来看,它不会扩展到大量用户.

使用JQuery我会每秒发出一次请求以保持聊天窗口的更新,或者用户是否正在发送与其他用户聊天的请求.这将导致服务器上的额外负载,因为用户群将增加加班时间.

我被告知使用PHP这不是一个理想的解决方案,我应该研究彗星编程,这是我以前从未尝试过的.

我的问题是,我可以使用任何预构建框架,还是构建它的更好方法?

我听说过NodeJs和APE,但我的服务器不支持这些.

多谢你们.

编辑:在与我的服务器人员谈话后,我可能会更改我的操作系统,以便我可以运行NodeJS.nodejs的可伸缩性有多好,它能满足我的需求吗?

php mysql ajax facebook comet

6
推荐指数
1
解决办法
3138
查看次数

与facebook和gmail相比,我自己的长轮询实现

几天来,我一直在试验我的网站的长轮询/彗星实施.我得到了它如何工作的基本概念,这是我运行一些测试的地方.

另一方面,我一直在观察(firebug)gmail和facebook如何实现长轮询.我在gmail中注意到的是ajax请求在当前请求到期后不会继续跟进,但是在它触发下一个请求之前等待几秒/分钟.

我玩了一些.我尝试使用firefox中的gmail帐户A和Chrome中的gmail帐户B登录.我在当前的ajax民意调查结束时等待,然后我从账户B发送了一封电子邮件给A.我希望账户A在下次投票之前不会收到它,但令我惊讶的是账户A在我点击之后直接收到它提交按钮.

gmail如何通过长轮询进行此操作?

如果您尝试访问我的站点并单击"运行"按钮并打开firebug,则可以看到ajax微调器始终在运行.当服务器响应数据时,它再次请求服务器.

ajax jquery comet long-polling

6
推荐指数
1
解决办法
1448
查看次数

Lightstreamer背后的魔力是什么?

我将为彗星编程开发一个框架,我不能使用Web套接字或服务器发送事件(因为浏览器支持真的很糟糕).因此,我需要保持HTTP连接的活动状态,并将分块数据发送回客户端.

但是,当您进入工作时,问题就出现了:

  1. 使用XMLHttpRequest是不可能的,因为事实上,IE浏览器不给你xhr.responseText,同时xhr.readyState为3.
  2. 隐藏iframe无用,因为浏览器在我将数据发送回客户端时显示加载器.
  3. 我试图将JavaScript文件发送回客户端,每次都发送函数执行命令,但浏览器在完全加载之前不会执行JavaScript.

但是,当我查看Lightstreamer演示页面时,我看到它一点一点地将JavaScript文件发送回客户端,并且在每一步中,它都会调用该函数并且该函数只是被执行(我不能这样做)部分).似乎Lightstreamer使用AJAX,因为请求只是出现在Firebug的控制台选项卡中,但它也像IE中的魅力一样.

我试图使用他们在请求中设置的每个HTTP头字段,但没有结果.我也尝试使用HTTP Post而不是HTTP Get,但仍然没有结果.

我已经阅读了近20篇关于如何实施彗星的文章,但是没有一篇文章可以解决我遇到的问题:

  1. 如何使其跨浏览器?
  2. 如何在从服务器到达新数据时收到通知(我应该挂钩什么事件)?
  3. 如何使我的页面显示为完全加载到用户(如何实现它,以便浏览器不显示加载活动)?

有人可以帮忙吗?我认为应该有一个非常小的提示或技巧,我不知道在这里将所有概念粘合在一起.有谁知道lightstreamer会做些什么来克服这些问题?

javascript ajax comet http lightstreamer

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

Node.js和Comet

基本上,我试图从头开始使用node.js建立一个基本的彗星服务器和客户端.一个尝试谷歌的事情它应该工作的过程,因为我正在测试它似乎工作正常.然而,一个问题仍在我脑海中.首先,我想向您展示代码.

var http = require('http');
var sys = require('sys');
var fs = require('fs');
var qs = require('querystring');

var server = http.createServer();

var connections = [];

server.on('request', function(req, res) {

    console.log(req.url);

    if(req.url == '/index') {

        fs.readFile(__dirname + '/index.html', function(err, data){
            if(err) {
                res.writeHead(err, data);
                return res.end('Error loading index.html');
            }

            res.writeHead(200);
            res.end(data);
        });
    } else if(req.url == '/sendData') {
        if (req.method == 'POST') {
            var body = '';
            req.on('data', function (data) {
                body += data;
            });
            req.on('end', function () {

                var POST …
Run Code Online (Sandbox Code Playgroud)

javascript ajax comet node.js

6
推荐指数
1
解决办法
9409
查看次数