标签: comet

没有Comet的反向Ajax?

是否可以让Web服务器在没有Comet的情况下向Web浏览器发送消息?

像Facebook和谷歌这样的每个主要网络公司都使用Comet来实现这个目的,如果为主流浏览器启用了tcp连接,它就像是一个丑陋的黑客等待消失.

ajax tcp comet

7
推荐指数
1
解决办法
3191
查看次数

长轮询与流式传输约1次更新/秒

流媒体是一个可行的选择?根据我的选择,服务器端会有性能差异吗?这个案子比另一个好吗?

我正在使用运行在服务器端的Tomcat的GWT应用程序.为了了解我的需求,想象一下同时更新几种股票的股票价格.

streaming gwt comet long-polling

7
推荐指数
1
解决办法
6058
查看次数

在加载comet/server push XMLHttpRequest时停止浏览器"thomber of doom"

(这个问题类似于这一个,但它的使用,而不是对彗星的iframe XMLHttpRequest的.)

我正在开始像这样的异步长轮询:

var xhr = new XMLHttpRequest();
xhr.open('POST', url);
xhr.send();
Run Code Online (Sandbox Code Playgroud)

如果我<script>...</script>在头部内部执行此操作,则会导致文档永远保持加载状态.(我在Mac OS X和iPhone上的Safari中测试它,它是我需要支持的唯一浏览器).

使用DOMContentLoadedload事件将无法正常工作.

使用具有足够大延迟的setTimeout 将起作用.0将不会,1000将,100将有时,而不是其他时间.我对此感到不舒服.

我发现作品的唯一方法是两者的结合:

document.addEventListener('DOMContentLoaded', function () {
    setTimeout(function () {
        var xhr = new XMLHttpRequest();
        xhr.open('POST', url);
        xhr.send();
    }, 0);
});
Run Code Online (Sandbox Code Playgroud)

我想现在这解决了这个问题,但是我仍然害怕它将来会破裂.//编辑:这也不能可靠地工作.

有谁知道更可靠的方式?

javascript ajax comet javascript-events

7
推荐指数
1
解决办法
2741
查看次数

JavaScript可以检测用户何时停止加载文档?

我正在使用脚本标签长轮询技术实现Comet,基于此页面.

一个问题(我认为没有解决方案)是"厄运的悸动" - 浏览器继续将文档显示为"正在加载"并启用工具栏上的"停止"按钮.这种品牌的意义,因为该文件仍在加载,虽然它的效果并不理想,我想我可以住在一起.

第二个问题是,如果用户实际单击停止,则浏览器停止加载我的脚本标记,我必须依赖超时来重启Comet.这意味着如果我的超时是20秒,则在用户单击"停止"后,该页面最多可能不会更新20秒.我的问题是:有没有办法检测他们什么时候这样做?我可以使用onkeydown事件检测他们何时按下escape ,但是如果他们使用工具栏按钮或菜单项来停止加载则不会.

该解决方案需要在Firefox 3.5和Chrome 3.0中运行.

javascript ajax events comet

7
推荐指数
1
解决办法
2458
查看次数

在C#中使用Google Channel API

官方文档没有提到支持,但我想知道是否可以连接客户端程序而不是javascript来使用Channel API.我目前正在使用Windows应用程序的基本轮询技术,使用Channel API可以提高响应速度并减少负载.

我认为,作为一个丑陋的黑客,我可以在后台渲染一个隐藏的webbrowser对象,并在其中运行javascript,然后以此为基础.有更好的解决方案吗?

c# google-app-engine comet cometd channel-api

7
推荐指数
1
解决办法
1764
查看次数

哪一个是最好的COMET服务器?

我正在寻找一个COMET服务器,我想将服务器上的消息专门推送到一些id的用户,我正在使用php,我正在寻找一个好的,简单的COMET服务器.

你能告诉我哪一个最好吗?

php jquery comet

7
推荐指数
1
解决办法
3655
查看次数

NodeJS + socket.io:简单的客户端/服务器示例无法正常工作

我正在使用NodeJS v0.4.8和最新版本的socket.io

npm install socket.io

在Ubuntu上:

Linux mars 2.6.38-8-generic#42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU/Linux

遗憾的是,以下代码不会在客户端或服务器端产生任何输出.

有人有线索吗?

服务器端

var http = require('http'),  
io = require('socket.io'),
fs = require('fs'),
sys = require('sys');

respcont = fs.readFileSync('testclient.js');

server = http.createServer(function(req, res){
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.end(respcont);
});
server.listen(8082);

var socket = io.listen(server); 
socket.on('connection', function(client){ 

    sys.puts("New client is here!");
    client.send("hello world");

    client.on('message', function(msg) { sys.puts("client has sent:"+msg); }) ;
    client.on('disconnect', function() { sys.puts("Client has disconnected"); }) ;
}); 
Run Code Online (Sandbox Code Playgroud)

客户端

<html> …
Run Code Online (Sandbox Code Playgroud)

javascript comet node.js socket.io

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

在线游戏中玩框架longpolling

我正在使用play框架开发一个浏览器游戏,我肯定需要longpolling,但我不太明白如何使用它.WebSockets对于它来说是完美的,但它还没有得到那么多浏览器的支持.

这就是我想要做的事情:当用户登录并导航到游戏控制器时,我想开始连接并保持打开状态.我想为所有在线用户执行此操作,因此我可以在网站上显示这些用户的列表,以便他们可以互相玩耍.我查看了文档,但我不明白如何在我的情况下实现它.因为根本没有我想要计算的东西(在示例中他们正在生成pdf)我只想让连接保持打开状态.

我还想知道的是,我应该如何跟踪所有这些开放的连接?现在,我online在数据库的users表中只有一个列,我更新了.每次有人连接时我都要更新数据库.有没有更好的方法来做到这一点,还是这样好吗?

最后,假设以上所有工作.当玩家A选择玩家B玩时:如何通知玩家B?我只是发送一些JSON代码,并在播放器B的一侧用javascript更改页面,还是将他发送到一个完全不同的页面?当两个连接建立并且游戏已经开始时,我不确定如何通信.

java comet long-polling websocket playframework

7
推荐指数
1
解决办法
2916
查看次数

AJAX /反向AJAX:轮询还是推送?

我正在研究AJAX,因为我正在使用Javascript和PHP制作实时应用程序.它需要能够在不刷新页面的情况下进行更新并实时更新.

我尝试使用setInterval()轮询服务器但是为了快速我必须每秒都有它.它似乎使用了大量的带宽.它确实有效,我有一个计划与我的托管服务提供商'无限带宽'.虽然网站上有很多压力,但我想使用Push技术.

学习如何设置Push非常困难.从我设法弄清楚,你必须托管某种类型的推送服务器或彗星服务器.我也研究过websockets,但你也必须自己主持它.当我没有服务器计算机时,我不明白该怎么做,我的托管服务提供商网站上没有关于此的文档.

特定主机提供商是否为您托管推送服务器?有没有办法获得服务器而不必托管它?这似乎是一个比投票更好的选择,但同时它似乎非常令人困惑.

ajax comet real-time reverse-ajax ajax-polling

7
推荐指数
1
解决办法
6448
查看次数

长轮询XMLHttpRequests和间歇性网络连接的问题

我已经实现了一个长轮询连接,允许我使用Tomcat Web服务器和前端的标准javascript进行服务器端推送(彗星).为了保持连接,我有一个简单的保持活动循环,一旦最后一个完成/失败就会启动一个新的请求.

绝大多数时候,这种连接完全正常,并且像我期望的那样保持活力.但是,我注意到当用户的互联网连接断开时(例如,他们断开VPN连接,拔掉他们的以太网等)并且我有一个待处理的XMLHttpRequest出服务器,我没有得到任何失败的迹象.因此,连接无声地死亡,我不知道它发生了,除非我经常向服务器发送请求以测试连接(这似乎打败了使用长轮询的目的).

这是我在Chrome中看到的请求对象,当它死于这个沉默的死亡时:

request: XMLHttpRequest
    onabort: function ()
    onerror: function ()
    onload: null
    onloadend: null
    onloadstart: null
    onprogress: null
    onreadystatechange: function ()
    readyState: 1
    response: ""
    responseText: ""
    responseType: ""
    responseXML: null
    status: [Exception: DOMException]
    statusText: [Exception: DOMException]
    upload: XMLHttpRequestUpload
    withCredentials: false
Run Code Online (Sandbox Code Playgroud)

我有三个监听器(onabort,onerror,onreadystatechange)设置来警告消息,如果它们被解雇,但每当我连接到服务器时,我什么也得不到.这是我正在形成请求的方式:

var request = new XMLHttpRequest();

//url is just the url to my servlet to handle this
request.open("GET", url, true);

//handlestatechange is just my standard handling code 
//that I've put an alert at the top of
request.onreadystatechange …
Run Code Online (Sandbox Code Playgroud)

javascript comet xmlhttprequest

7
推荐指数
1
解决办法
4190
查看次数