服务器发送事件:最数据库的学习简单的实时浏览器规范

国际 虚拟云 浏览

小编:这是关于我们最新特性的系列文章的第一部分:实时调试器!下面是我们如何使用新的服务器发送事件标准来实现实时流,帮助您调试通过服务器的所有调用。-这是关于如何构建调试

这是关于我们最新特性的系列文章的第一部分:实时调试器!下面是我们如何使用新的服务器发送事件标准来实现实时流,帮助您调试通过服务器的所有调用。-这是关于如何构建调试器系列文章的第一篇。要试用,请登录到Why another spec?不幸的是,在网络上,我们没有太多的流式网络调用选项,而本地应用程序很可能只使用原始tcp或udp常用技术是:轮询Ajax/JSONPWebsocketsFlashServer发送的事件(SSE)(Gifsockets;)各有利弊,我们可以用任何一个。然而,许多都有很大的缺点,比如轮询创建了太多的连接,websockets需要HTTP升级,Flash是专有的技术。在我们之所以选择SSE,是因为它是最简单、最直接的方法,无论是在概念上还是在实现上,做我们所做的需要。服务器-发送事件我首先从@konstantinhaase了解了SSE,他向我解释了Travis CI如何使用它们进行实时构建更新。我在争论为什么不直接使用WebSockets,但是相比之下,WebSockets是一个复杂的怪物,只有在你需要完全双向的时候才会发光通讯。全部there is to SSE是浏览器向HTTP服务器发出HTTP请求,该服务器以data为前缀并以\n\n.Boosh分隔的行进行响应!没有奇怪的HTTP升级,服务器端可以非常简单,因为它只是HTTP,所以它可以很好地与现有的防火墙、web服务器堆栈配合使用等等,不像使用轮询,您仍然可以获得持久的连接,因此,如果您对每个请求执行身份验证逻辑,则每个请求只需执行一次客户。安示例SSE端点的响应如下这个:它太简单了,你会想为什么SSE还这么小知道。那个在客户机上监听的代码是:这是一个用节点.js,每秒写入当前日期。别忘了将Content-Type标题设置为text/event-溪流优势最大的优势是SSE的轻量级:它是原始http,您可以让它在几行代码中工作,而无需使用任何库。对于传统浏览器支持,有一些polyfill可以使用pureJS浏览器目前还没有一家互联网探险家支持SSE,而mobile Opera和Android也不支持。但是,所有最新版本的Firefox、Chrome、Safari和Opera做。为了其余的,有多个多边形填充。Yaffle的one by Yaffle在重新连接方面很聪明,支持CORS,但也需要修改服务器。雷米设计的这款似乎也很受欢迎,重量更轻,但同时又不那么重稳健。调谐reconnectionsEventSources默认情况下会重新连接,但您可以根据应用程序的要求、堆栈和预期调整重新连接行为客户端:发送重试行:以配置客户端的重新连接时间。发送一id行:在数据行之前,以将唯一id与事件关联。浏览器将跟踪该id,并且在重新连接的情况下,将添加最后一个事件id作为HTTP头,以便服务器能够智能地立即向客户端发送什么。例如,在聊天场景中,您将发送自客户端上一条消息以来发生的所有消息看见了。习惯事件名称如果您要发送不同类型的事件,比如房间连接和messageevent,SSE让您在流中区分这些事件。在数据行之前发送一行event:\n以让EventSource知道您希望将其称为该行事件。用于示例:将触发:deployment有些软件存在长连接问题,我们需要在堆栈:添加proxy_http_1.1版;对我们的nginx代理的指令,这样它就不会过早关闭连接每隔30秒发送一次心跳,因为Amazon ELB会在60个空闲库之后终止空闲连接segmentio/sse组件是客户端订阅的一个很好的包装器。使用组件(1)安装。如果服务器端的数据源是节点流,则有segmentio/sse stream node模块,它是转换为sse的转换流格式:链接规格我使用服务器发送的DOM事件-在本系列的下一期中,我们将了解如何构建实时调试器

当前网址:http://www.vmchk.com//linggan/icon/9193.html

 
你可能喜欢的: