TOGOUTECH

javascript - 如何在不使用 setInterval/timeout 的情况下检查实时更新?

建立一个社交网络,我正在尝试获取实时通知。目前,站点使用setInterval每隔几秒发送一次AJAX请求。它看起来像这样:setInterval(function(){url=base_dir+"/ajax/file.php";data="data=someData";$.ajax({type:"POST",url:url,data:data,dataType:"json",beforeSend:function(x){if(x&&x.overrideMimeType){x.overrideMimeTyp

javascript - 在 Firefox 下按 Escape 会终止我的 Ajax 请求。我想阻止这个

我正在开发一个需要长时间运行的Ajax请求的Web应用程序。不幸的是,在Firefox下,在请求期间按Escape有一个缺点,即终止请求及其持有的任何信息。这很烦人,因为如果这发生在错误的时间,可能会导致各种令人讨厌的并发症。因此,我想停用此功能。我的第一个react是拦截边界处的按键,以确保它们不会到达窗口。为此,我安装了一个[keypress]事件处理程序,仅用于[keyChar]为27的事件,并让它调用[stopPropagation]和[preventDefault]。有一段时间,这似乎奏效了。然后,我意识到当用户没有点击窗口上的任何地方时它不会工作,因为事件处理程序从未收到该

javascript - 服务器推送 : comet vs ape?

我读过一些关于cometd和APE的资料。哪个更好?我希望用户看到其他用户更新的内容。就像GoogleWave。在Comet中,有2个版本:iframe与传统的ajax。有什么区别,哪个更好。不太明白。谢谢。 最佳答案 Comet是一组可用于开发实时应用程序的技术。您有两个主要实现:流式传输和长轮询。在常规的http请求中,用户将请求发送到服务器,接收数据(html、脚本等)并关闭连接-故事结束。在流式传输中,客户端或服务器永远不会关闭连接,双方共享一个连接。在长轮询中,您有一个等待响应的循环连接。基本上,浏览器向服务器发送请求并坐

javascript - Comet VS Ajax 轮询

我需要创建一个像facebook聊天一样的聊天。使用Comet,我需要更多内存来保持连接。使用Ajax轮询时,如果我每3-4秒发送一次请求,就会出现延迟问题。所以...如果延迟(3-4秒)无关紧要,Ajax轮询是否更适合我的情况? 最佳答案 延迟不是唯一的问题。COMET(长轮询)“节省”您的流量-当您使用轮询时,您无法知道服务器是否发生变化,因此某些调用可能只是浪费流量和资源(例如,即使没有人的聊天,您每3-4秒就会调用一次电话)。在COMET的情况下,您通常只需调用一次即可从服务器获取更新(具有100%的命中率)。

javascript - NodeJS + 套接字.io : simple Client/Server example not working

我正在使用NodeJSv0.4.8和最新版本的socket.ionpminstallsocket.io在Ubuntu上:Linuxmars2.6.38-8-generic#42-UbuntuSMPMonApr1103:31:50UTC2011i686i686i386GNU/Linux不幸的是,以下代码不会产生任何输出,无论是在客户端还是在服务器端。有人知道吗?服务器端varhttp=require('http'),io=require('socket.io'),fs=require('fs'),sys=require('sys&#

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

我正在使用脚本标签长轮询技术实现Comet,基于thispage.一个问题(我认为没有解决方案)是“厄运的悸动者”——浏览器继续将文档显示为永远“正在加载”,并使工具栏上的“停止”按钮处于启用状态。这是有道理的,因为文档正在仍在加载,虽然它并不理想,但我认为我可以接受它。但是,第二个问题是,如果用户实际单击“停止”,则浏览器将停止加载我的脚本标记,我必须依靠超时来重新启动Comet。这意味着如果我的超时时间是20秒,则在用户单击“停止”后最多20秒内页面可能不会更新。我的问题是:有没有办法检测他们何时这样做?我可以使用onkeydown事件检测他们何时按下退出键,但如果他们使用工具栏按

javascript - 如何检查 node.js 中打开的连接数?

我有一台运行node.js(v0.1.32)的机器,带有一个tcp服务器(tcp.createServer)和一个http服务器(http.createServer)。http服务器被基于comet的应用程序在端口80上发出的长轮询请求(每次持续50秒)击中。出于相同目的,iphone应用程序在端口8080上有tcp套接字连接。发现服务器有一段时间无法处理更多的连接(尤其是tcp连接,而http连接似乎正常!!??),重启后才正常。为了对连接进行负载测试,我创建了一个tcp服务器并生成了2000个请求,并发现在达到机器上的最大文件描述符限制(默认1024)后连接开始失败。这是一个非常小

javascript - 加载 cometd /服务器推送 XMLHttpRequest 时停止浏览器 “throbber of doom”

(这个问题类似于thisone,但它是针对使用XMLHttpRequest而不是Comet的iframe。)我正在开始这样的异步长轮询:varxhr=newXMLHttpRequest();xhr.open('POST',url);xhr.send();如果我在内部执行此操作<script>...</script>在头部,它会导致文档永远保持加载状态。(我正在MacOSX和iPhone上的Safari中对此进行测试,它是我需要支持的唯一浏览器)。使用DOMContentLoaded或load事件将不起作用。使用具有足够大延迟的setTimeout

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

我已经实现了一个长轮询连接,允许我在前端使用TomcatWeb服务器和标准javascript进行服务器端推送(comet)。为了保持连接继续,我有一个简单的保持事件循环,它会在最后一个请求完成/失败后立即启动一个新请求。在绝大多数情况下,这种连接工作得非常好,并且如我所料地保持事件状态。但是,我注意到当用户的互联网连接断开时(例如,他们从VPN断开连接,拔掉他们的以太网,等等)并且我有一个待处理的XMLHttpRequest到服务器,我没有得到失败的迹象。正因为如此,连接悄无声息地消失了,除非我不断地向服务器发送请求来测试连接(这似乎违背了使用长轮询的目的),否则我无法知道它发生了。

javascript - 长轮询中 iphone 上的 safari 加载指示器

我正在尝试使用XMLHttpRequest进行长轮询。它在所有支持的浏览器上运行良好,但出于某种原因,在iPhone上的safari上我得到了每个ajax调用的加载指示器,而对于长轮询,这有点烦人。我读到您需要等到文档加载完毕,但它无法正常工作。任何其他已知的黑客来解决它? 最佳答案 我遇到了同样的问题,我尝试使用简单的XHRO、隐藏的iFrame等,但它在iPhone上不起作用。在加载“整个”文档之前,它似乎不会更新DOM或执行任何操作,在我的示例中是长轮询的持续时间。我唯一没有尝试过的是JSONP。也许你可以试试JSONP。请让