首页
学习
活动
专区
圈层
工具
发布

【Go 语言社区】Web 通信 之 长连接、长轮询(long polling)--转

二、长连接、长轮询的应用场景 长连接、长轮询一般应用与WebIM、ChatRoom和一些需要及时交互的网站应用中。其真实案例有:WebQQ、Hi网页版、Facebook IM等。...,JavaScript在收到服务器端传送的信息后控制页面的显示。...服务器程序对轮询的可控性 由于轮询是用死循环的方式实现的,所以在算法上要保证程序对何时退出循环有完全的控制能力,避免进入死循环而耗尽服务器资源。 2....使用此方法已经类似于ajax的异步交互了,这种方法也是不能保证顺序的、比较耗费资源、而且总是有一个加载的条在地址栏或状态栏附件(当然要解决可以利用htmlfile,Google的攻城师们已经做到了,网上也有封装好的...当然你选择经由HTTP长轮询使用XMLHttpRequest对象(在服务器端挂起的一个简单的Ajax请求)的Comet模式,所有支持Ajax的浏览器也都支持该种做法。

4.7K30

Web 通信 之 长连接、长轮询(long polling)

二、长连接、长轮询的应用场景 长连接、长轮询一般应用与WebIM、ChatRoom和一些需要及时交互的网站应用中。其真实案例有:WebQQ、Hi网页版、Facebook IM等。...接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示。...服务器程序对轮询的可控性 由于轮询是用死循环的方式实现的,所以在算法上要保证程序对何时退出循环有完全的控制能力,避免进入死循环而耗尽服务器资源。 2....使用此方法已经类似于ajax的异步交互了,这种方法也是不能保证顺序的、比较耗费资源、而且总是有一个加载的条在地址栏或状态栏附件(当然要解决可 以利用htmlfile,Google的攻城师们已经做到了,网上也有封装好的...当然你 选择经由HTTP长轮询使用XMLHttpRequest对象(在服务器端挂起的一个简单的Ajax请求)的Comet模式,所有支持Ajax的浏览器也 都支持该种做法。

2.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Comet:基于 HTTP 长连接的“服务器推”技术

    IE 在 readystate 为 3 时,不能读取服务器返回的数据,目前 IE 不支持基于 Streaming AJAX。...所以在开发长连接的应用时, 必须注意在使用了多个 frame 的页面中,不要为每个 frame 的页面都建立一个 HTTP 长连接,这样会阻塞其它的 HTTP 请求,在设计上考虑让多个 frame 的更新共用一个长连接...控制信息与数据信息使用不同的 HTTP 连接 使用长连接时,存在一个很常见的场景:客户端网页需要关闭,而服务器端还处在读取数据的堵塞状态,客户端需要及时通知服务器端关闭数据连接。...在实现上,如果是基于 iframe 流方式的长连接,客户端页面需要使用两个 iframe,一个是控制帧,用于往服务器端发送控制请求,控制请求能很快收到响应,不会被堵塞;一个是显示帧,用于往服务器端发送长连接请求...如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源。

    2.5K70

    Comet:基于 HTTP 长连接的“服务器推”技术

    本文首先介绍、比较了常用的 “服务器推”方案,着重介绍了 Comet - 使用 HTTP 长连接、无须浏览器安装插件的两种“服务器推”方案:基于 AJAX 的长轮询方式;基于 iframe 及 htmlfile...所以在开发长连接的应用时, 必须注意在使用了多个 frame 的页面中,不要为每个 frame 的页面都建立一个 HTTP 长连接,这样会阻塞其它的 HTTP 请求,在设计上考虑让多个 frame 的更新共用一个长连接...控制信息与数据信息使用不同的 HTTP 连接 使用长连接时,存在一个很常见的场景:客户端网页需要关闭,而服务器端还处在读取数据的堵塞状态,客户端需要及时通知服务器端关闭数据连接。...在实现上,如果是基于 iframe 流方式的长连接,客户端页面需要使用两个 iframe,一个是控制帧,用于往服务器端发送控制请求,控制请求能很快收到响应,不会被堵塞;一个是显示帧,用于往服务器端发送长连接请求...如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源。

    3K30

    Comet技术详解:基于HTTP长连接的Web端实时通信技术前言学习交流概述“服务器推”(Comet技术)的应用范围来看看更传统的基于客户端套接口的“服务器推”技术基于 HTTP 长连接的“服务器

    浏览器的发展需要客户端升级软件,同时由于客户端浏览器软件的多样性,在某种意义上,也影响了浏览器新技术的推广。在 Web 应用中,浏览器的主要工作是发送请求、解析服务器返回的信息以不同的风格显示。...所以在开发长连接的应用时, 必须注意在使用了多个 frame 的页面中,不要为每个 frame 的页面都建立一个 HTTP 长连接,这样会阻塞其它的 HTTP 请求,在设计上考虑让多个 frame 的更新共用一个长连接...3)控制信息与数据信息使用不同的 HTTP 连接 使用长连接时,存在一个很常见的场景:客户端网页需要关闭,而服务器端还处在读取数据的堵塞状态,客户端需要及时通知服务器端关闭数据连接。...在实现上,如果是基于 iframe 流方式的长连接,客户端页面需要使用两个 iframe,一个是控制帧,用于往服务器端发送控制请求,控制请求能很快收到响应,不会被堵塞;一个是显示帧,用于往服务器端发送长连接请求...如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源。

    6.4K11

    浏览器与服务器的消息通信

    最近工作中遇到一个场景,商家在商家后台需要实时的获取到有没有新订单,有的话是几个;这个需求类似与日常中使用QQ或者微信时的新信息提醒一样,只要有新信息就需要提醒;商家基本在PC上使用,各式浏览器都有:如...长轮询优缺点 优点 客户端很容易实现良好的错误处理系统和超时管理,实现成本与Ajax轮询的方式类似。 缺点 需要服务器端有特殊的功能来临时挂起连接。...Google 的天才们使用一个称为“htmlfile”的 ActiveX 解决了在 IE 中的加载显示问题,并将这种方法用到了 gmail+gtalk 产品中。...我们常用的网页版的gtalk就是这种实现方式,Google的开发人员使使用一个称为“htmlfile”的 ActiveX 解决了在 IE 中的加载显示问题。...如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源。

    1.9K60

    浏览器与服务器的消息通信

    最近工作中遇到一个场景,商家在商家后台需要实时的获取到有没有新订单,有的话是几个;这个需求类似与日常中使用QQ或者微信时的新信息提醒一样,只要有新信息就需要提醒;商家基本在PC上使用,各式浏览器都有:如...长轮询优缺点 优点 客户端很容易实现良好的错误处理系统和超时管理,实现成本与Ajax轮询的方式类似。 缺点 需要服务器端有特殊的功能来临时挂起连接。...Google 的天才们使用一个称为“htmlfile”的 ActiveX 解决了在 IE 中的加载显示问题,并将这种方法用到了 gmail+gtalk 产品中。...我们常用的网页版的gtalk就是这种实现方式,Google的开发人员使使用一个称为“htmlfile”的 ActiveX 解决了在 IE 中的加载显示问题。...如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源。

    2.1K50

    轮询和长轮询_http长轮询

    长轮询:   1:解决了轮询的两个大问题,数据实时更新;   2:唯一的缺点是服务器在挂起的时候比较耗内存; web通信中的 长连接 长轮询 基于HTTP的长连接,是一种通过长轮询方式实现“服务器推”的技术...web版微信二维码 webQQ HI网页版,Facebook IM等 优缺点    轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。   ...长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。   ...实例:Gmail聊天   Flash Socket:在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信...,JavaScript在收到服务器端传送的信息后控制页面的显示。

    1.8K40

    浏览器与服务器的消息通信

    最近工作中遇到一个场景,商家在商家后台需要实时的获取到有没有新订单,有的话是几个;这个需求类似与日常中使用QQ或者微信时的新信息提醒一样,只要有新信息就需要提醒;商家基本在PC上使用,各式浏览器都有:如...长轮询优缺点 优点 客户端很容易实现良好的错误处理系统和超时管理,实现成本与Ajax轮询的方式类似。 缺点 需要服务器端有特殊的功能来临时挂起连接。...Google 的天才们使用一个称为“htmlfile”的 ActiveX 解决了在 IE 中的加载显示问题,并将这种方法用到了 gmail+gtalk 产品中。...我们常用的网页版的gtalk就是这种实现方式,Google的开发人员使使用一个称为“htmlfile”的 ActiveX 解决了在 IE 中的加载显示问题。...如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源。

    1.9K30

    在线客服技术详解(未完待续)

    1、 轮询 这是一种比较古老而简单的解决方案,也就是定时刷新,在线客服在聊天的时候,aJax在后台定时获取数据,如果接收到发送过来的消息的话,则将消息显示在聊天框上。...Comet技术 Commet是一种使用HTTP长连接,无需浏览器安装插件的“服务器推”方案。它有两者方案:基于aJax的长轮询方式;基于iframe和htmlfile的流方式。...这里,我们只关注里面的基于aJax的长轮询方式。 Pushlet是一个开源的Comet框架,其中在设计上有很多值得借鉴的地方,能够使用它来开发一个不是大规模的在线客服系统。...2、 客服对应的长连接获取web服务器上的数据,然后在客服的页面上显示出来。 3、 客服回复聊天信息,系统将数据保存到web服务器(同时也保存数据库)上。...所以,本文考虑的是采用aJax长轮询方式来实现的。 在这里,我建议客服的聊天数据从数据库读取,而用户的聊天数据从web服务器上读取。

    1.8K50

    轮询和长轮询 轮询和长轮询

    轮询和长轮询 轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。 优点:后端程序编写比较容易。 缺点:请求中有大半是无用,浪费带宽和服务器资源。...长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。 优点:在无消息的情况下不会频繁的请求。...另外,对于长连接和socket连接也有区分: 长连接:在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求,服务器端就能源源不断地往客户端输入数据。...实例:Gmail聊天 Flash Socket:在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket...接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示。

    2.4K30

    iframe框架及优缺点

    frameborder:规定是否显示框架周围的边框。 scrolling:规定是否在 iframe 中显示滚动条。 width:规定iframe的宽度,建议使用CSS替代。...使用场景 加载其他域的网页 是允许跨域请求资源的,但是不能够修改,由此可以在网页中嵌套其他网页,如需要跨域通信的话,需要考虑document.domain、window.name、window.postMessage...实现Ajax 可以使用iframe进行实现异步请求发送,来模拟Ajax的请求操作,Ajax的异步请求完成操作为XHR.readyState === 4执行callback,iframe使用iframe.onload...执行callback,还可以实现一个轮询长连接。...加载广告 广告是与原文无关的,假如硬编码进去,会造成网页布局的紊乱,而且这样势必需要引入额外的css和js文件,极大的降低了网页的安全性,使用iframe便可以解决这些问题。

    3.5K20

    javaweb实现即时消息推送功能

    在浏览某些网页的时候,例如 WebQQ、京东在线客服服务、CSDN私信消息等类似的情况下,我们可以在网页上进行在线聊天,或者即时消息的收取与回复,可见,这种功能的需求由来已久,并且应用广泛。...---- 长轮询 相比于上一种实现,长轮询同样是客户端发起请求,服务端返回数据,只不过不同的是,在长轮询的情况下,服务器端在接到客户端请求之后,如果发现数据库中的数据并没有更新或者不符合要求,那么就不会立即响应客户端...可以看到,这种方法其实与短轮询没什么区别,唯一的区别在于短轮询保证每次请求都能收到响应,但上述示例的长连接不一定每次都能得到响应,如果下一次长连接开始请求,上一次连接还没得到响应,则上一次连接将被终止。...使用反向ajax框架DWR DWR(Direct Web RemoTIng)是一个Web远程调用AJAX扩展框架,通过DWR客户端的JavaScript可以直接调用Web服务器上的JavaBean类的方法...方法,返回结果通过回调方法更新页面上的HTML元素,实现监控数据的显示。

    2.3K30

    扫码登录背后的思考

    ,而是在客户端发送ajax请求后进行返回的响应。...长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。 ...优点:在无消息的情况下不会频繁的请求,耗费资源小。  缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护。  实例:WebQQ、Hi网页版、Facebook IM。...实例:Gmail聊天 Flash Socket:在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信...,JavaScript在收到服务器端传送的信息后控制页面的显示。

    2.8K10

    项目介绍以及websocket的消息推送(轮询操作)、报文格式和握手过程(建立连接过程)

    ,双方通过网页的形式来进行对战比赛 核心技术 Java Spring/Spring Boot/Spring MVC HTML/CSS/JS/AJAX MySQL/MyBatis WebSocket 创建项目...相关依赖 WebSocket 消息推送 我们之前学习的服务器开发,主要是这样的模型: 客户端主动向服务器发起请求,服务器收到之后,返回一个响应 如果客户端不主动发起请求,服务器是不能主动联系客户端的...但 HTTP 自身是难以实现这种消息推送效果的 HTTP 要想实现类似的效果,就需要基于“轮询”的机制 玩家 1 在思考中,尚未落子 玩家 2,每隔一段时间(每隔 1s,500ms…),就主动地给服务器发起一个请求...,问看看当前玩家 1 落子了没有 很明显,像这样的轮询操作,开销是比较大的,成本也是比较高的 如果轮询间隔时间长,玩家 1 落子之后,玩家 2 就不能及时拿到结果 如果轮询间隔时间短,虽然即时性得到改善...这个字段本身就是一个变长的,一个 websocket 数据报能承载的载荷长度是非常非常长的 Payload Data:实际报文要传输的数据载荷 握手过程(建立连接过程) 使用一个网页端,尝试和服务器建立

    14910

    网页实时聊天之js和jQuery实现ajax长轮询

    众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系。所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息。...4、长轮询,是轮询的升级版,需要服务器端的配合。 5、websocket,HTML5的通信功能,建立一个与服务器端的专用接口ws协议来进行通讯,兼容可能成为问题,改天研究一下这个。...这篇博文总结一下用JS和JQ两种方式(其实不同就是js和jq的实现),实现AJAX长轮询。 长轮询的思想: ? 如图:用AJAX发送询问信息,服务器在没有信息要返回的时候进入无限等待。...由于AJAX异步的特性,PHP在服务器端执行等待不会影响到页面的正常处理。一旦服务器查询到返回信息,服务器返回信息,AJAX用回调函数处理这条信息,同时迅速再次发送一个请求等待服务器处理。...与传统轮询相比,长轮询在服务器没的返回信息的时候进入等待,减少了普通轮询服务器无数次的空回复。可以这样认为,长轮询使服务器每次的返回更有目的性,而不是盲目返回。

    4.6K80

    auto-comet服务器端向客户端的自动发送

    现有 AJAX 技术的发展并不能解决在一个多用户的 Web 应用中,将更新的信息实时传送给客户端,从而用户可能在“过时”的信息下进行操作。而 AJAX 的应用又使后台数据更新更加频繁成为可能。 ?...最近几年,因为 AJAX 技术的普及,以及把 IFrame 嵌在“htmlfile“的 ActiveX 组件中可以解决 IE 的加载显示问题,一些受欢迎的应用如 meebo,gmail+gtalk 在实现中使用了这些新技术...基于长轮询的服务器推模型   一些应用及示例如 “Meebo”, “Pushlet Chat” 都采用了这种长轮询的方式。相对于“轮询”(poll),这种长轮询方式也可以称为“拉”(pull)。...IE 在 readystate 为 3 时,不能读取服务器返回的数据,目前 IE 不支持基于 Streaming AJAX。   ...使用 iframe 请求一个长连接有一个很明显的不足之处:IE、Morzilla Firefox 下端的进度栏都会显示加载没有完成,而且 IE 上方的图标会不停的转动,表示加载正在进行。

    3.4K60

    基础 | 前端通信进阶(上)

    以前追求就是静态网页,显示信息而已。 现在,正朝着web2.0,webapp前进。 以前的单向交流 已经不能满足 需求了。 怎么办呢? 改呗~ 所以,紧接着SSE,websocket 诞生了....有兴趣的同学可以看一看.then, 我们可以模拟一下实在的JSONP请求.上面是直接将script 写死在html内部, 这样造成的结果可能会阻塞页面的加载....所以,以前我们通常使用ajax,iframe长轮询来代替他.但是这样有个缺点就是, 可操控性弱, 错误率高。...AJAX 可以接受任意类型 结束机制不同: 虽然使用AJAX长轮询也可以实现这样的效果, 但是, 服务器端(nodeJS)必须在一定时间内执行res.end()才行....服务端使用SSE 由于使用的是HTTP协议,所以对于服务端基本上没什么太大的改变.

    75010
    领券