首页 / 知识
关于ajax:是否有某种方法可以将数据从Web服务器推送到浏览器?
2023-04-12 18:02:00

Is there some way to PUSH data from web server to browser?我当然知道Ajax,但是Ajax的问题在于浏览器应该经常轮询服务器以查找是否有新数据。 这会增加服务器负载。 除了频繁轮询服务器之外,还有什么更好的方法(甚至使用Ajax)吗? 是的,您正在寻找的是COMET http://en.wikipedia.org/wiki/Comet_(编程)。要搜索的其他优质Google术语还有AJAX-push和反向ajax。 是的,它叫做反向Ajax或Comet。 Comet基本上是总括性术语,用于表示打开长期HTTP请求以将数据实时推送到Web浏览器的不同方式。我建议使用StreamHub Push Server,它们有一些不错的演示,并且比其他任何服务器都容易上手。查看《 Comet和StreamHub入门指南》以获取快速介绍。您可以使用社区版,该社区版可免费下载,但仅限20个并发用户。仅提供支持就非常值得商业版本,另外您还可以获得SSL以及Desktop .NET和Java客户端适配器。可以通过Google网上论坛获得帮助,网络上有很多教程,还有GWT Comet适配器。
现在,您应该使用WebSockets。 您可以通过javascript轻松启动连接:
服务器端处理取决于您的技术堆栈。 研究Comet(它是Ajax是清洁剂的事实的欺骗,Comet也是如此),它基本上是"反向Ajax"。请注意,这要求每个用户都需要长期的服务器连接才能接收通知,因此在编写应用程序时请注意性能影响。 http://en.wikipedia.org/wiki/Comet_(programming) 彗星绝对是您想要的。根据您的语言/框架要求,有不同的服务器库可用。例如,WebSync是面向ASP.NET/C#/IIS开发人员的IIS集成的彗星服务器,如果需要与其他语言进行更紧密的集成,则还有很多其他独立服务器。 Comet的一个有趣替代方法是在Flash中使用套接字。 我强烈建议您花一些时间在Comet上,但是我不知道您可以使用的实际实现或库。 对于Web应用程序的某种"呼叫中心控制面板",其中涉及为实时Callcenter更新代理和呼叫队列状态,我们开发了一种内部解决方案,该解决方案可以运行,但离您可以使用的库很远。 我们要做的是在与电话系统对话的服务器上实现一个小型服务,等待新事件并维护情况的照片。该服务提供了一个小型Web服务器。 我们的Web客户端通过HTTP连接到该Web服务器,并索要最后一张照片(以XML编码),将其显示,然后再次查找新照片。此时,Web服务器可以:
这样,当客户端进行轮询时,它将在最多0到30秒内得到响应。如果已经生成了新事件,它将立即获取它),否则它将阻塞直到生成新事件。 它基本上是轮询,但是它有点聪明,不会使Web服务器过热。如果Comet不是您的答案,我相信可以使用相同的想法来实现,但是可以使用更广泛的AJAX或JSON编码来获得更好的结果。这是在AJAX时代之前设计的,因此还有很多改进的空间。 如果有人可以提供这种方法的实际轻量级实现,那就太好了! 另一种标准方式是SSE(服务器发送事件,在JavaScript对象之后也称为EventSource)。 彗星实际上是由Dojo Toolkit(http://www.dojotoolkit.org)的Alex Russell创造的。这是更多信息的链接http://cometdproject.dojotoolkit.org/ 您可以在客户端使用Flash / Flex应用程序,在服务器端使用BlazeDS或LiveCycle。可以使用RTMP连接将数据推送到客户端。请注意,RTMP使用非标准端口。但是,如果端口被阻塞,您可以轻松地返回轮询。 值得一看的Meteor Server是为COMET设计的Web服务器。不错的演示,twitterfall也使用它。 通过使用持久的http连接,可以实现您的目标。 在Wikipedia上查看Comet文章,这是一个不错的起点。 您提供的信息不多,但是如果您正在考虑构建某种事件驱动的网站(a'la digg spy)或类似的东西,您可能会希望实现与之连接的隐藏IFRAME一个从不关闭连接的URL,然后您将脚本标记从服务器推送到客户端以执行更新。 还有其他方法。不知道它们在您的情况下是否"更好"。您可能有一个Java小程序,该Java小程序在页面加载时连接到服务器,并等待服务器发送内容。它的启动速度会慢很多,但是将允许浏览器不频繁地从服务器接收数据,而无需轮询。
打开与服务器的连接后,它可以保持打开状态,服务器可以推送内容很久以前我使用 我认为您可以通过轮询来做一些聪明的事情,通过不发送内容不变的标头,而是保持连接打开,使其更像推,但我从未做到过。 请检查此库https://github.com/SignalR/SignalR以了解如何在数据可用时将其动态推送到客户端 您可以尝试我们的Comet组件-尽管这是非常实验性的...! 可能还想看看ReverseHTTP。 如果您正在使用jsp页面,也可以查看Java Pushlets。 |
最新内容
相关内容
python有map方法吗
python有map方法吗,培训,位置,数据,函数,列表,序列,参数,元素,方法,使用方法,python中的map:map()会根据提供的函数对指定序列做映射。第一个python爬虫和数据分析有哪些第三方
python爬虫和数据分析有哪些第三方库?,培训,爬虫,和数,以上,更多,内容,以上内容为大家介绍了爬虫和数据分析有哪些第三方库,希望对大家有所python数据分析相关的技术
python数据分析相关的技术,分析,数据,培训,技术,python爬虫和数据分析有哪些第三方
python爬虫和数据分析有哪些第三方库?,培训,爬虫,和数,python如何连接mysql数据库
python如何连接mysql数据库,培训,数据,项目,一致,流程,数据库,参数,结果,接口,语句,python数据库接口支持非常多的数据库,你可以选择适合你项python定时修改数据库
python定时修改数据库,时间,服务,培训,单位,代码,标准,线程,操作,时间差,进程,1.传入执行改库操作的时间update_time,用update_time和当前时间python常见的数据类型转换函数有哪
python常见的数据类型转换函数有哪些?,培训,数据类型,函数,python有哪些方法可以解压文件?
python有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大。python函数与方法的区别是什么
python函数与方法的区别是什么,培训,函数,方法,区别,对象,以上,方式,更多,内容,python中函数和方法的区别1、函数要手动传self,方法不用传selpython字符串切片的方法是什么
python字符串切片的方法是什么,培训,字符串,索引,切片,开头,方括号,时候,方法,冒号,首尾,获取Python字符串中的某字符可以使用索引:lang=pythopython类自带方法吗
python类自带方法吗,培训,方法,里面,实例,也就是说,下面,对象,以上,之后,参数,python中的类,创建好之后,里面是没有方法的,也就是说,类并没有自带python子类可以调用父类方法吗
python子类可以调用父类方法吗,培训,名称,资料,情况,地方,函数,参数,方法,表示,语句,python中的子类中的__init__()函数会覆盖父类的函数,一些