我正在编写一个使用Comet/Long Polling来保持网页最新的AJAX网络应用程序,我注意到在Chrome中,它会将页面视为始终加载(标签图标不断旋转).
我认为这对谷歌Chrome + Ajax来说是正常的,因为即使Google Wave也有这种行为.
那么今天我注意到Google Wave不再保持加载图标旋转,任何人都知道他们如何解决这个问题?
这是我的ajax调用代码
var xmlHttpReq = false;
// Mozilla/Safari
if (window.XMLHttpRequest) {
xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttpReq.open('GET', myURL, true);
xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttpReq.onreadystatechange = function() {
if (xmlHttpReq.readyState == 4) {
updatePage(xmlHttpReq.responseText);
}
}
xmlHttpReq.send(null);
Run Code Online (Sandbox Code Playgroud) 花了整整两天的时间后,我仍然发现无法理解Comet in Python的所有选择和配置.我已经阅读了这里的所有答案以及我能找到的每篇博文.感觉我此刻即将出血,所以我对这个问题的任何错误都表示歉意.
我对这一切都是全新的,我之前所做的只是在Apache上使用PHP/Django后端的简单非实时站点.
我的目标是创建一个实时聊天应用程序; 希望绑定到Django的用户,身份验证,模板等.
每当我读到一个工具,它说我需要另一个工具,它感觉就像一个永无止境的链.
首先,任何人都可以对这项工作所需的所有工具进行分类吗?
我已经阅读了有关客户端的不同服务器,网络库,引擎,JavaScripts,我不知道还有什么.我从没想过会是这么复杂.
扭曲 /扭网站似乎是受欢迎的,但我不知道要整合,或什么别的我需要(猜我需要客户端JS至少).
如果我理解正确,Orbited是基于 Twisted 构建的,我还需要其他任何东西吗?
Gevent和Eventlet与Twisted属于同一类别吗?我还需要多少钱?
Celery,RabbitMQ或像Redis这样的KV商店在哪里出现?我真的不明白消息队列的概念.它们是否必不可少,它们提供的服务是什么?
我应该看一下完整的聊天应用教程吗?
我会完全感激任何帮助我度过这个精神障碍的人,如果我遗漏了任何东西,请不要犹豫.我知道这是一个非常有问题的问题.
我搜索redis命令列表.我找不到命令来获取redis pub/sub中的所有可用频道.在流星服务器中,等效命令是LISTCHANNELS,它列出了所有已知信道,每个信道上存储的消息数和当前用户数.
我有一个需要定期了解可用频道的cron.redis是否有本机命令?或者我需要找到一种方法来自己实现它?
Caplin等许多Comet实现都提供了服务器可扩展的解决方案
以下是Caplin网站的统计数据之一:
Caplin解释器的单个实例可以支持多达100,000个客户端,每个客户端每秒接收1条消息,平均延迟小于7毫秒.
如何与任何网络服务器上的HTML5 websockets进行比较?任何人都可以指向任何HTML 5 websockets统计信息?
如何将Django与Tornado Web服务器一起使用?
如何在Python中使用Google App Engine实现Comet/Server推送?
我将在Python中实现Comet(尽管我听到了关于erlycomet的好消息,但我对于支持基于Erlang的Web服务器以及后端的其他内容并不感到激动).我发现了几种可能性:
(还有一些与Java服务器接口的其他选择,但我对那些不感兴趣)
考虑到性能,社区和易于实施,有人可以在这些实现中提出建议吗?
假设服务器获得10,000个并发连接(通过socket.io).这是很多,如果它不能再处理,我需要启动另一台服务器.
如何将这两个服务器与socket.io同步?
有没有办法在javascript中加载页面中间停止iframe?我需要做的原因是我从网络服务器后台的iframe流数据(通过彗星风格机制),我需要能够切断随意连接.
欢迎任何想法.
我已经离开了PHP/MySQL中的舒适区域,因为语法/封装/程序化的东西会令人沮丧.
上周,我开始玩并参与一些教程,使用Node.js/Socket.IO创建实时聊天应用程序.到目前为止,我从未对WebSockets做过任何事情,而且看起来真的很酷 - 服务器和客户端之间的即时通信非常棒.
现在,请原谅我在这里缺乏理解,但是设置了HTTP,这样你就不应该能够在客户端和服务器之间保持连接 - 而且我对Comet的基本理解是它强制连接保持打开状态永远不会终止写入流并只发送NUL字节.这听起来......服务器密集.
那么WebSockets如何工作呢?如果我一次在我的聊天应用程序上有几百人,服务器不会超载吗?当我在服务器上使用PHP/MySQL时,服务器一次只处理一个请求 - 如果我每隔一秒钟使用AJAX并进行一次轮询,我想它会快速升级,因为你有数千个请求一分钟.
我的问题是,WebSockets是否适用于大型应用程序?没有真正高带宽的服务器是否实用?
我想这归结为:在频繁间隔的AJAX轮询,Comet和WebSockets之间是否存在显着的服务器负载/用户体验差异?
谢谢!