当然我知道的Ajax,但Ajax的问题是浏览器应轮询服务器经常以寻找是否有新的数据。 这增加了服务器负载。
有没有更好的方法(甚至使用Ajax),比轮询服务器经常其它?
当然我知道的Ajax,但Ajax的问题是浏览器应轮询服务器经常以寻找是否有新的数据。 这增加了服务器负载。
有没有更好的方法(甚至使用Ajax),比轮询服务器经常其它?
是的,你要找的是什么COMET http://en.wikipedia.org/wiki/Comet_(programming) 。 其他好的方面谷歌搜索是AJAX推动和反向的Ajax。
是的,这就是所谓的反向Ajax的或彗星 。 彗星基本上是为了实时将数据推到Web浏览器中打开长期的HTTP请求的不同方式的总称。 我建议StreamHub推送服务器 ,他们有一些很酷的演示,它更容易上手比任何其他服务器。 退房入门彗星和StreamHub教程进行快速介绍。 您可以使用社区版是可以免费下载的,但仅限于20个并发用户。 商业版本是非常值得单独的支持,再加上你得到SSL和桌面.NET和Java客户端适配器。 帮助可通过谷歌集团 ,有在网络上一个好的一堆教程,有一个GWT彗星适配器了。
现在,你应该使用WebSockets。 这是2011标准,允许启动与HTTP连接,然后将其升级为双向客户端 - 服务器基于消息的通信。
您可以轻松地开始从JavaScript的连接:
var ws = new WebSocket("ws://your.domain.com/somePathIfYouNeed?args=any");
ws.onmessage = function (evt)
{
var message = evt.data;
//decode message (with JSON or something) and do the needed
};
在服务器端处理取决于你的tenchnology堆栈。
考虑彗星(以下事实Ajax是一种清洗剂,所以是彗星欺骗),其基本上是“反向的Ajax”。 请注意,这需要为每个用户一个长期的服务器连接接收通知,以便编写应用程序时,要注意对性能的影响。
http://en.wikipedia.org/wiki/Comet_(programming)
彗星绝对是你想要的。 对于不同的语言/框架的要求,有可用不同的服务器库。 例如, WebSync是ASP.NET/C#/IIS开发商的IIS集成彗星服务器 ,并且还有一堆其他的独立服务器,以及如果你需要与其他语言更紧密的集成。
我强烈建议投资一些时间上的彗星,但我不知道实际的实现或库,你可以使用。
对于一个不大不小的web应用程序的“呼叫中心控制面板”中,涉及更新代理和呼叫队列状态为我们开发了一个内部解决方案,它的工作原理,但远离你可以使用一个库的实时呼叫中心。
我们所做的是实现一个可与电话系统,等待新的事件和维护情况的照片服务器上的小服务。 该服务提供了一个小型网络服务器。
我们的网络连接的客户端通过HTTP这个网络服务器和要求的最后一张照片(在XML编码),显示它,然后又来了,要求新的照片。 此时的web服务器可以:
这样,当客户调查,得到它在0到30秒以内的响应。 如果已经产生了新的事件它会立即),否则块,直到产生新的事件。
它基本上是投票,但有些智能轮询不会过热的网络服务器。 如果彗星是不是你的答案,我敢肯定,这可以用同样的想法,但使用更广泛的AJAX或JSON获得更好的结果编码来实现。 这是预先设计的AJAX的时代,所以有很多改进的余地。
如果有人能提供实际轻量级实现这一点,太棒了!
彗星一个有趣的选择是在Flash中使用套接字。
另一种,标准,方法是SSE(服务器发送的事件,也被称为EventSource的 ,JavaScript对象后)。
彗星实际上是由亚历克斯·拉塞尔从Dojo Toolkit的(创造http://www.dojotoolkit.org )。 下面是更多的infomration链接http://cometdproject.dojotoolkit.org/
There are other methods. Not sure if they are "better" in your situation. You could have a Java applet that connects to the server on page load and waits for stuff to be sent by the server. It would be a quite a bit slower on start-up, but would allow the browser to receive data from the server on an infrequent basis, without polling.
您可以使用服务器端的BlazeDS的LiveCycle或在客户端上的Flash / Flex应用程序。 数据可以推到使用RTMP连接的客户端。 要知道,RTMP使用非标准端口。 但是,如果端口被阻塞,你可以很容易地回落到轮询。
这是可能才达到你通过使用持久HTTP连接的瞄准什么。
退房彗星的文章在维基百科,这是开始的好地方。
你没有提供很多信息,但如果你正在寻找建立某种事件驱动的网站(网HRS欧洲Digg的间谍),或沿东西的,你可能正在寻求实现连接到一个隐藏的iframe线一个网址,其中连接永远不会关闭,然后你就会从服务器到客户端,以便进行更新推脚本标签。
可能是值得一试流星服务器是专为COMET的Web服务器。 尼斯的演示 ,它也使用twitterfall 。
一旦打开一个连接到服务器时,它可以保持开放,服务器可以推送内容很长一段时间以前,我用做multipart/x-mixed-replace
,但是这并没有在IE浏览器。
我认为你可以做聪明的东西与投票,使得它的不发送内容不变的信息,但是离开连接打开,但我从来没有做过这方面的工作更像是推。
您可以尝试我们的彗星成分 -尽管这是非常实验...!
请检查该库https://github.com/SignalR/SignalR知道如何将数据推送到客户的动态,因为它变得可用
您还可以看看Java的Pushlets如果您使用的JSP页面。
可能想在看ReverseHTTP也。