是否有某种方式来PUSH从Web服务器数据到浏览器?是否有某种方式来PUSH从Web服务器数据到浏览

2019-05-08 21:20发布

当然我知道的Ajax,但Ajax的问题​​是浏览器应轮询服务器经常以寻找是否有新的数据。 这增加了服务器负载。

有没有更好的方法(甚至使用Ajax),比轮询服务器经常其它?

Answer 1:

是的,你要找的是什么COMET http://en.wikipedia.org/wiki/Comet_(programming) 。 其他好的方面谷歌搜索是AJAX推动和反向的Ajax。



Answer 2:

是的,这就是所谓的反向Ajax的彗星 。 彗星基本上是为了实时将数据推到Web浏览器中打开长期的HTTP请求的不同方式的总称。 我建议StreamHub推送服务器 ,他们有一些很酷的演示,它更容易上手比任何其他服务器。 退房入门彗星和StreamHub教程进行快速介绍。 您可以使用社区版是可以免费下载的,但仅限于20个并发用户。 商业版本是非常值得单独的支持,再加上你得到SSL和桌面.NET和Java客户端适配器。 帮助可通过谷歌集团 ,有在网络上一个好的一堆教程,有一个GWT彗星适配器了。



Answer 3:

现在,你应该使用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堆栈。



Answer 4:

考虑彗星(以下事实Ajax是一种清洗剂,所以是彗星欺骗),其基本上是“反向的Ajax”。 请注意,这需要为每个用户一个长期的服务器连接接收通知,以便编写应用程序时,要注意对性能的影响。

http://en.wikipedia.org/wiki/Comet_(programming)



Answer 5:

彗星绝对是你想要的。 对于不同的语言/框架的要求,有可用不同的服务器库。 例如, WebSync是ASP.NET/C#/IIS开发商的IIS集成彗星服务器 ,并且还有一堆其他的独立服务器,以及如果你需要与其他语言更紧密的集成。



Answer 6:

我强烈建议投资一些时间上的彗星,但我不知道实际的实现或库,你可以使用。

对于一个不大不小的web应用程序的“呼叫中心控制面板”中,涉及更新代理和呼叫队列状态为我们开发了一个内部解决方案,它的工作原理,但远离你可以使用一个库的实时呼叫中心。

我们所做的是实现一个可与电话系统,等待新的事件和维护情况的照片服务器上的小服务。 该服务提供了一个小型网络服务器。

我们的网络连接的客户端通过HTTP这个网络服务器和要求的最后一张照片(在XML编码),显示它,然后又来了,要求新的照片。 此时的web服务器可以:

  • 返回新照片,如果有一个
  • 块(在我们的设置30)几秒钟的客户端等待某些事件ocurr并更改照片。 如果在这一点上没有生成事件,它将返回相同的照片,只允许连接活下去,而不是超时客户端。

这样,当客户调查,得到它在0到30秒以内的响应。 如果已经产生了新的事件它会立即),否则块,直到产生新的事件。

它基本上是投票,但有些智能轮询不会过热的网络服务器。 如果彗星是不是你的答案,我敢肯定,这可以用同样的想法,但使用更广泛的AJAX或JSON获得更好的结果编码来实现。 这是预先设计的AJAX的时代,所以有很多改进的余地。

如果有人能提供实际轻量级实现这一点,太棒了!



Answer 7:

彗星一个有趣的选择是在Flash中使用套接字。



Answer 8:

另一种,标准,方法是SSE(服务器发送的事件,也被称为EventSource的 ,JavaScript对象后)。



Answer 9:

彗星实际上是由亚历克斯·拉塞尔从Dojo Toolkit的(创造http://www.dojotoolkit.org )。 下面是更多的infomration链接http://cometdproject.dojotoolkit.org/



Answer 10:

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.



Answer 11:

您可以使用服务器端的BlazeDS的LiveCycle或在客户端上的Flash / Flex应用程序。 数据可以推到使用RTMP连接的客户端。 要知道,RTMP使用非标准端口。 但是,如果端口被阻塞,你可以很容易地回落到轮询。



Answer 12:

这是可能才达到你通过使用持久HTTP连接的瞄准什么​​。

退房彗星的文章在维基百科,这是开始的好地方。

你没有提供很多信息,但如果你正在寻找建立某种事件驱动的网站(网HRS欧洲Digg的间谍),或沿东西的,你可能正在寻求实现连接到一个隐藏的iframe线一个网址,其中连接永远不会关闭,然后你就会从服务器到客户端,以便进行更新推脚本标签。



Answer 13:

可能是值得一试流星服务器是专为COMET的Web服务器。 尼斯的演示 ,它也使用twitterfall 。



Answer 14:

一旦打开一个连接到服务器时,它可以保持开放,服务器可以推送内容很长一段时间以前,我用做multipart/x-mixed-replace ,但是这并没有在IE浏览器。

我认为你可以做聪明的东西与投票,使得它的不发送内容不变的信息,但是离开连接打开,但我从来没有做过这方面的工作更像是推。



Answer 15:

您可以尝试我们的彗星成分 -尽管这是非常实验...!



Answer 16:

请检查该库https://github.com/SignalR/SignalR知道如何将数据推送到客户的动态,因为它变得可用



Answer 17:

您还可以看看Java的Pushlets如果您使用的JSP页面。



Answer 18:

可能想在看ReverseHTTP也。



文章来源: Is there some way to PUSH data from web server to browser?