精华内容
下载资源
问答
  • 服务器推送技术

    千次阅读 2018-11-04 10:07:37
    什么是服务器推送技术 推送技术是指通过客户端与服务器端建立长链接,客户端可以接收由服务器端不定时发送的消息。 解决方案 1.Ajax短轮询 2.Ajax长轮询 3.WebSocket 短轮询 Ajax短轮询:http 短轮询是 server 收到...

    什么是服务器推送技术

    推送技术是指通过客户端与服务器端建立长链接,客户端可以接收由服务器端不定时发送的消息。

    解决方案

    1.Ajax短轮询

    2.Ajax长轮询

    3.WebSocket

    短轮询

    Ajax短轮询:http 短轮询是 server 收到请求不管是否有数据到达都直接响应http请求;如果浏览器收到的数据为空,则隔一段时间,浏览器又会发送相同的http请求到server 以获取数据响应,就是用一个定时器不停的去网站上请求数据。

    		缺点:消息交互的实时性较低(server端到浏览器端的数据反馈效率低)。
    

    长轮询

    http 长轮询是server 收到请求后如果有数据,立刻响应请求;如果没有数据 就会 停留 一段时间,这段时间内,如果 server 请求的数据到达(如查询数据库或数据的逻辑处理完成),就会立刻响应;如果这段时间过后,还没有数据到达,则以空数据的形式响应http请求;若浏览器收到的数据为空,会再次发送同样的http请求到server。

    AJAX的长轮询

    1,DeferredResult:Springmvc的控制层接收用户的请求之后,采用异步处理,立即返回DeferedResult泛型对象,此时驱动控制层的容器主线程,可以处理更多的请求。
    2,Servlet3:也是异步处理。

    				缺点:server 没有数据到达时,http连接会停留一段时间,这会造成服务器资源浪费;
    

    SSE

    严格地说,HTTP 协议无法做到服务器主动推送信息。但是,有一种变通方法,就是服务器向客户端声明,接下来要发送的是流信息(streaming)。
    也就是说,发送的不是一次性的数据包,而是一个数据流,会连续不断地发送过来。这时,客户端不会关闭连接,会一直等着服务器发过来的新的数据流,视频播放就是这样的例子。本质上,这种通信就是以流信息的方式,完成一次用时很长的下载。
    SSE 就是利用这种机制,使用流信息向浏览器推送信息。它基于 HTTP 协议,目前除了 IE/Edge,其他浏览器都支持。
    SSE 与 WebSocket 作用相似,都是建立浏览器与服务器之间的通信渠道,然后服务器向浏览器推送信息。

    总体来说,WebSocket 更强大和灵活。因为它是全双工通道,可以双向通信;SSE是单向通道,只能服务器向浏览器发送,因为流信息本质上就是下载。如果浏览器向服务器发送信息,就变成了另一次 HTTP 请求。

    				SSE 也有自己的优点:
    					SSE 使用 HTTP 协议,现有的服务器软件都支持。WebSocket 是一个独立协议。
    					SSE 属于轻量级,使用简单;WebSocket 协议相对复杂。
    					SSE 默认支持断线重连,WebSocket 需要自己实现。
    					SSE 一般只用来传送文本,二进制数据需要编码后传送,WebSocket 默认支持传送二进制数据。
    					SSE 支持自定义发送的消息类型。
    					SSE 也是长连接	
    

    http长轮询和短轮询的异同

    1)相同点:当server 的数据不可达时,基于http长轮询和短轮询 的http请求,都会 停留一段时间;
    2)不同点:http长轮询是在服务器端的停留,而http 短轮询是在 浏览器端的停留;
    3)性能总结:从这里可以看出,不管是长轮询还是短轮询,都不太适用于客户端数量太多的情况,因为每个服务器所能承载的TCP连接数是有上限的,这种轮询很容易把连接数顶满;

    WebSocket通信

    什么是WebSocket

    WebSocket 是 html5 规范发布的新协议,和 http协议完全是两个不同的概念,或者说基本没关系;WebSocket协议和http协议的唯一联系点在于,WebSocket协议为了兼容现有浏览器的握手规范而采用了http协议中的握手规范以建立WebSocket连接,其客户端与服务器建立的是 持久连接。

    		WebSocket 解决了 HTTP 的几个难题:
    			1(http协议的被动性):采用 WebSocket 协议后,服务器可以主动推送消息给客户端;而不需要客户端以(长/短)轮询的方式发起http请求到server以获取数据更新反馈;这样一来,客户端只需要经过一次HTTP请求,就可以做到源源不断的信息传送了(在程序设计中,这种设计叫做回调,即:server端有信息了再来通知client端,而不是client端每次都傻乎乎地跑去轮询server端 是否有消息更新);
    			2(http协议的无状态性/健忘性):短轮询是每次http请求前都要建立连接,而长轮询是相邻几次请求前都要建立连接;http请求响应完成后,服务器就会断开连接,且把连接的信息全都忘记了;所以每次建立连接都要重新传输连接上下文(下面有补充),将 client 端的连接上下文来告诉server端;而WebSockct只需要一次HTTP握手,整个通讯过程是建立在一次连接(状态)中的,server端会一直推送消息更新反馈到客户端,直到客户端关闭请求,这样就无需客户端为发送消息而建立不必要的 tcp 连接 和 为了建立tcp连接而发送不必要的冗余的连接上下文消息;
    
    		特点:
    			1,HTML5中的协议,实现与客户端与服务器双向,基于消息的文本或二进制数据通信
    			2,适合于对数据的实时性要求比较强的场景,如通信、直播、共享桌面,特别适合于客户与服务频繁交互的情况下,如实			时共享、多人协作等平台。
    			3,采用新的协议,后端需要单独实现
    			4,客户端并不是所有浏览器都支持
    

    实现

    1,HTML5规范中的WebSocket API

    2,WebSocket的子协议STOMP。

    				STOMP(Simple Text Oriented Messaging Protocol):
    					1,简单(流)文本定向消息协议
    					2,STOMP协议的前身是TTMP协议(一个简单的基于文本的协议),专为消息中间件设计。是属于消息队列的一种协议, 和AMQP,JMS平级.它的简单性恰巧可以用于定义websocket的消息体格式.STOMP协议很多MQ都已支持,比如RabbitMq, ActiveMq。
    					3,生产者(发送消息)、消息代理、消费者(订阅然后收到消息)
    					4,STOMP是基于帧的协议
    

    SSE和WebSocket相比的优势

    1,最大的优势就是便利:不需要添加任何新组件,用任何你习惯的后端语言和框架就能继续使用。你不用为新建虚拟机、弄一个新的IP或新的端口号而劳神,就像在现有网站中新增一个页面那样简单。可以称为既存基础设施优势。

    2,SSE的第二个优势是服务端的简洁。相对而言,WebSocket则很复杂,不借助辅助类库基本搞不定。WebSocket能做的,SSE也能做,反之亦然,但在完成某些任务方面,它们各有千秋。WebSocket是一种更为复杂的服务端实现技术,但它是真正的双向传输技术,既能从服务端向客户端推送数据,也能从客户端向服务端推送数据。

    总结

    技术没有优劣之分,只有场景是否合适,在京东的支付完成之后的跳转的推送技术中,也是用的ajax段轮训的方式,原因是要用有限的资源来为千万级甚至上亿的用户提供服务,如果是用长连接,对于接入的服务器,比如说Nginx,是很大的压力,光是为用户维持这个长连接都需要成百上千的Nginx的服务器,这是很划不来的。因为对于京东这类购物网站来说,用户的浏览查询量是远远大于用户下单量的,京东需要注重的是服务更多的用户,而且相对于用户浏览页面的图片等等的流量而言,这点带宽浪费占比是很小的。所以我们看京东的付款后的实现,是用的短轮询机制,而且时长放大到了5秒。

    展开全文
  • 实现 Dwr 服务器推送

    2017-12-28 14:06:23
    实现 Dwr 服务器推送实现 Dwr 服务器推送实现 Dwr 服务器推送实现 Dwr 服务器推送实现 Dwr 服务器推送
  • 服务器推送信息给安卓设备端服务器推送信息给安卓设备端
  • 4、目前的Server Push推送机制没有解决浏览器已经具有资源缓存,而服务器已经推送到网络中,虽然浏览器可以发送RST桢拒绝推送流,但是服务器推送的资源已经在网络中等待浏览器接收。现在已经有一些规范草案( ...

    作者:卢满宇, 腾讯后台开发 工程师
    商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。
    原文链接:http://wetest.qq.com/lab/view/355.html

    WeTest 导读


    HTTP/1.X出色地满足互联网的普遍访问需求,但随着互联网的不断发展,其性能越来越成为瓶颈。IETF在2015年发布了HTTP/2标准, 着重于提高HTTP的访问体验, HTTP2优势主要包括: 二进制传输、头部压缩、多路复用和服务器推送(Server Push)。 截止目前, 大部分CDN厂商已经宣布支持HTTP/2,然而”支持”大多省略了服务器推送(ServerPush)特性。估计这和nginx开源版本没有支持Server Push相关。为提供完备的HTTP2能力,腾讯CDN现已完成HTTP/2的Server Push支持,并完成了详细的性能测试。


    序言

    在介绍Server Push功能之前,先来分析网站的加载过程。图1是腾讯课堂(https://ke.qq.com/index.html)的时间瀑布图。

    a) 首先浏览器请求主页面index.html,服务端响应内容;

    b) 获取到主页应答,浏览器开始解析主页的html标签,发现构建DOM树还需要CSS, GIF, JS等资源;

    c) 发起针对CSS,GIF,JS的内容请求;

    d) 获取并解析JS和CSS等内容, 然后继续请求依赖资源。

    图1 腾讯课堂域名的时间瀑布图

    图2是简化的浏览器和服务器的交互过程,横轴代表时间轴,每个虚线区间是1个RTT。红色竖线表示DOM 加载完成的时间。从图中可知,虽然存在并发传输, 但主页index.html和依赖的资源common.css、0684a8bf.css、comb.nowrap.0b772fee.js等总体上是顺序的,等待资源响应的时间减慢了主页面加载速度。并发传输并不能提高串行解析的资源访问体验。

    如果服务端接收到客户端主请求,能够“预测”主请求的依赖资源,在响应主请求的同时,主动并发推送依赖资源至客户端。客户端解析主请求响应后,可以”无延时”从本地缓存获取依赖资源, 减少访问延时, 提高访问体验,也加大了链路的并发能力。Server Push正是基于此原理来提高网络体验。

    图3说明了若采用服务端推送的功能,则JS/CSS资源基本可以和HTML资源同步到达,浏览器可以“无延时”获取JS/CSS资源,客户端的延时最多可以减少一个RTT。

    构建一个简单的例子来验证我们的说法。图4所示为simple_push.html代码,页面依赖资源simple_push.js和simple_nopush.js, 页面大小均不超过1KB,主要时间消耗在传输延时。如图5所示为推送simple_push.js和不推送simple_nopush.js的效果对比。

    图4 推送测试HTML代码

    图5 不推送&推送的效果对比

    我们上线了一个测试demo网站(https://http1.gtimg.cn/push/mypush.html)。网页上展示一张世界地图,由400个小图片组成。对比三种访问方式:HTTP/1.1、HTTP/2(无Server Push)和 HTTP/2(Server Push)。Server Push选择推送第150~179个共30个小图。访问性能数据对比如图6所示:可以发现预推送比无推送有一定的性能提升(受网络延时和客户端行为影响,结果存在波动,后文有相应分析)。

    图6 demo网站测试

    简要介绍了Server Push的优化原理之后,伴随而来的疑问,推送什么资源,怎么去推送,以及比其他优化技术有什么优势?读完本章,这些问题将一一得到解答,文章最后用实例展示Server Push的应用场景和性能优化效果。

    一、推送实现


    1、标识依赖资源

    W3C候选推荐标准(https://www.w3.org/TR/preload/)建议了依赖资源的两种做法:文件内标签和HTTP头部携带, 表示该资源后续会被使用, 可以预请求, 关键字preload修饰这个资源, 写法如下:

    a) 静态Link标签法:

    b) HTTP头表示法:

    Link:

    2、推送资源

    用户访问CDN,主要包括直接访问的边缘节点, 若干中间节点和客户源站,路径中的每层都可以对请求做分析,预测可能的依赖资源,通过插入静态标签或者增加响应头部返回给浏览器。 CDN的推送主要采用头部携带推送信息。

    a) 客户端指定推送资源

    客户端通过url或者请求头说明需要的资源url,写法如下:

    Url:http://http2push.gtimg.com/simple_push.html?req-push=simple_push.js

    或者:

    GET /simple_push.html HTTP/1.1

    Host: http2push.gtimg.com

    User-Agent: curl/7.49.1

    Accept: /

    X-Push-Url: simple_push.js

    b) CDN节点指定推送资源

    CDN节点针对请求资源配置推送资源, 基础配置如下:

    location ~ “/simple_push.html$” {

    http2_server_push_url /simple_push.js

    }

    c) 源站指定推送资源

    通过增加响应头link通知客户端或者CDN节点,后续希望推送的依赖资源,中间具有 推送功能的节点(如CDN节点)可以基于此信息进行资源请求与推送.

    3、功能实现

    图7所示为CDN的Server Push架构, 基本流程如下:

    a) 用户请求到达服务器之后,依赖资源预测模块根据请求头或者配置预测浏览器需要的资源,该推送资源url必须是和主请求是同一host。如果不属于同一host,服务器拒绝推送资源。

    b) 服务器通过PUSH_PROMISE桢告诉浏览器准备推送的资源路径,该信息在原主请求流上发送,必须优先主请求响应发送,否则浏览器可能在推送资源到达前已经发起了依赖资源请求,造成重复和浪费.

    c) 依赖资源请求模块构造和主请求一样的请求信息,在本地或后端服务器请求推送资源,并主动创建新的HTTP/2请求流,后续服务器就可以发送资源响应,推送资源响应在服务端创建的流上传输,主页面响应在原始流传输。

    图7 CDN的Server Push模块改造示意图

    CDN节点的推送资源发送顺序在主请求响应之前,如图8所示,主要基于以下因素考量:

    d) 推送资源一般是静态的缓存命中率高的资源,如JS、CSS、字体和图片等。这些资源可以从源站预先推送并缓存到CDN节点。相比之下, 主页面变更较多,需要等待网络IO去源站取数据。同时,CDN边缘节点到浏览器的RTT一般是比CDN节点到源站的RTT更短。所以在取到主页面最新响应之前,有充足的时间去推送资源。

    e) 资源推送可以探测提高TCP拥塞窗口,窗口逐渐增大,后续可以一次性发送完主页面响应。TCP拥塞窗口对推送影响将在下文第三部分讨论。

    f) 在等待主请求响应的网络IO时间期间,推送资源可以是无优先级关系,资源推送优先级对推送影响也将在下文第三部分讨论。

    图8 推送时间点位于主页面响应之前

    二、Server Push技术对比


    1、纵向对比

    Server Push相对应没有Server Push的具体提升如下:

    a) Nopush加载耗时:Tnopush = RTT+ max(RTT, size(HTML)/BandWidth)+size(JS)/BandWidth

    b) push耗时:Tpush = RTT + size(HTML)/BandWidth + size(JS)/BW

    c) 改善效率:diff =1 - Tpush/TnoPush

    所以决定推送是否有改善性能的衡量因素是size(HTML/BandWidth)和RTT谁大。这里引入BDP(BandWidth-Delay product, 带宽时延乘积)概念。BDP描述了单位时间内该带宽能传输的数据大小。如果size(HTML)

    2、横向对比

    HTTP/1.1中有个资源内联(Resource Inlining)技术,把资源内容拷贝到HTML标签中。比如说

    三、使用场景分析


    理论上,在带宽足够的环境下,把需要的资源预先推送给客户端,必然能够节省获取资源时间,提升页面访问速度。但由于TCP慢启动、资源加载优先级、浏览器缓存等因素约束,我们在实际测试中发现,Server Push并不总能带来页面加载性能的提升。本节深入探讨下什么场景下的资源适合使用推送。

    1、TCP慢启动

    先复习下TCP慢启动特性:为了防止网络拥塞,TCP将放弃超出拥塞窗口大小的数据。只有当拥塞串口大小的数据传输完成,这个窗口大小将乘以2。如此,能够传输的数据以2的倍数增长。假设拥塞窗口大小为14kB,下图展示了某些情况下,推送比不推送的效率没有提升。

    图9 tcp慢启动对服务器推送的影响

    对比图9中子图1和子图2,子图1虽然预推送了/style.css,但是第一次RTT只传输了/style.css的4KB数据,剩下的16KB在第2个RTT完成。子图1总共需要2个RTT的时间,和子图2没有进行推送用了同样多的时间。子图3使用了3RTT完成了整个网站的传输,这会比没有推送使用更多的时间。

    2、资源加载优先级

    先看下面一个网站例子:

    其中1.js会调用2.js文件,3.js和4.js没有调用其他JS。

    正常没推送的例子加载时间表格会是

    图10 资源加载优先级的nopush&push效果图

    可以看出是因为1.js的加载优先级本应该在3.js和4.js之前,但是预先推送了3.js和4.js,然而1.js需要重新请求,并触发2.js请求,导致等待1RTT接收2.js。所以Push比No Push的效率更差。

    3、内核缓冲区

    HTTP/2的请求优先级并不能影响已经在内核发送缓冲区的数据。假设内核发送缓冲区大小比TCP拥塞串口大,导致服务端发送低优先级的数据,存在内核缓冲区。这时,后续有高优先级的响应必须等内核缓冲区空出才能被完成。假设我们访问一个HTML页面,这个HTML页面需要回源站取数据,而HTML需要的静态JS资源缓存在CDN边缘节点上。在回源站的等待时间内,把静态JS资源发送给浏览器。如果这时候静态JS资源很大,塞满了内核发送缓冲区,此时HTML响应已经到达CDN边缘节点,却不得不等内核缓冲区有空间才能继续发送。等待浏览器解析HTML内容后续的link请求也会被推迟。

    4、浏览器缓存

    推送浏览器已缓存的资源有可能使的加载时间更长,并且浪费带宽资源。重复推送已缓存的资源,如果没有额外的空闲带宽传输,网络会阻塞它之后正常的请求,导致拖累了整个网站的加载时间。

    四、网站测试


    我们对现网一些网页进行Server Push性能测试,因为推送要求同一个域名下的HTTP/2请求,为了规避非HTTP/2和跨余名带来的干扰,我们设置了代理节点,代理节点完成HTTP/2支持和域名收归,同时配置Server Push功能,观察网页的加载收益。为了准确测试Push带来网络时延变化,需要稳定的网络环境,在chrome设置网络环境mytest(RTT: 200ms, Download: 29Mb/s, Upload: 14Mb/s),以下的例子都在该网络环境进行测试。

    1、腾讯新闻

    按照前面描述的推送适用场景,用这个腾讯新闻页面(https://news.qq.com/a/20171031/032143.htm)做测试。主请求页面大小为11.6K。可以看出,预先推送js、css、图片等资源给客户端带来的网站性能变快。

    图11 腾讯新闻页面

    图12 腾讯新闻页面的无推送&推送对比图

    2、腾讯客服

    腾讯客服页面不支持HTTPS协议。之所以用这个页面是因为该网页页面主请求比较小,并且有JS、CSS触发的次优先级资源请求。我们把这个网页下载下来,并做了一些推送资源域名收归等必要的处理,放在CDN边缘节点做测试。这并没有改变网站的资源和请求顺序,不影响测试效果。

    图13是腾讯客服的页面。图14列出腾讯客服页面的所有请求。我们关注下具体几种情况的时间轴:无推送、推送小文件、推送大文件。小文件推送预先在第一个RTT把3个第3层请求才能触发的资源(tcss.ping.js、cdn_djl.js、layer.css)预先推送给浏览器。大文件推送是预先推送了indexBanner.png。

    从图14中的无推送和推送3个小文件的子图中,红色虚竖线是指不包括indexBanner.png的加载完成时间,由于3个小文件(尤其是次优先级请求tcss.ping.js)的提取推送,比无推送的时间延迟要短。但是又从无推送和推送大文件的子图中看到,如果无优先级顺序地推送大文件indexBanner.png(782KB)对缩短网站时延无帮助。

    图13 腾讯客服页面

    图14 无推送&推送小文件&推送大文件的对比图

    五、总结

    虽然本章的测试用例只是庞大互联网网页的冰山一角,文章不能覆盖各种网页场景。但是以下的一些总结建议是有实践意义的。

    1、在合适的时机,推送合适的资源,Push比No Push带来的网站时延提升是明显的。在网络带宽足够承载推送资源的前提下,我们预先推送浏览器后续请求需要的资源,网站的整体加载时间得到缩短。但是现实网络环境有不一样的延时和带宽。慢速网络环境影响TCP拥塞窗口增长的速度,除非主页面请求足够小,Push才能看到效果。

    2、即使是错误地实施某些推送策略(比如说推送过大文件),带来的最严重后果,也就是改善不明显。所以建议是多做一些推送策略的尝试,直到把合适的资源在合适的时机把资源推送给浏览器。

    3、网站往HTTP/2的环境迁移是个趋势。迁往HTTP/2需要将页面的所有请求尽量收归到同一域名,并且剥离出主页面的资源文件成多个独立的请求。假如你的网站已迁移到HTTP/2,而且网站的主请求不大,但是可能会触发很多资源请求。建议push这些资源。另外不要推送存放在浏览器cookie的资源,这只会浪费带宽。

    4、目前的Server Push推送机制没有解决浏览器已经具有资源缓存,而服务器已经推送到网络中,虽然浏览器可以发送RST桢拒绝推送流,但是服务器推送的资源已经在网络中等待浏览器接收。现在已经有一些规范草案(https://tools.ietf.org/html/draft-kazuho-h2-cache-digest-01)尝试用协商缓存摘要来解决问题。

    5、CDN中的负载均衡机制可能会将低优先级的推送资源送入到系统缓存区,这会影响高优先级资源的推送效率问题。引入QUIC替代TCP,可以对缓存中推送资源进行分级,高优先级资源先发。

    6、未来或将引入AI分析取代固定推送实现智能化推送。


    WeTest压测大师——为了帮助开发者发现服务器端的性能瓶颈,腾讯WeTest开放了压力测试功能,通过基于真实业务场景和用户行为进行压力测试,实现针对性的性能调优,降低服务器采购和维护成本。

    压测大师还服务了包括王者荣耀、龙之谷手游、轩辕传奇手游、火影忍者等多款高星级手游,也包括QQ、NOW直播等明星产品

    目前压测大师正式对外开放,点击链接:http://wetest.qq.com/gaps/ 即可使用。

    如果对使用当中有任何疑问,欢迎联系腾讯WeTest企业QQ:800024531

    展开全文
  • OneNET Http推送+java+ngrok实现OneNET向第三方服务器推送数据原理数据流模版第三方服务器搭建HTTP推送 原理 OneNET的HTTP推送服务可以将OneNET的数据以HTTP协议的方式向第三方服务器推送,这里第三方服务器就是...

    OneNET Http推送+java+ngrok实现OneNET向第三方服务器推送数据

    原理

    • OneNET的HTTP推送服务可以将OneNET的数据以HTTP协议的方式向第三方服务器推送,这里第三方服务器就是我们本地用java sdk搭建的服务器
      http推送服务概述
    • OneNET推送的目的服务器要求有对外开放的固定IP(是国家备案,实名认证的),自己电脑的IP一般都不是,需要做端口映射。这里使用ngrok实现

    本文章分为:
    1、OneNET上数据流模版生成
    2、第三方服务器搭建及ngrok代理
    3、http推送

    数据流模版

    1、在多协议接入页面选择HTTP,新建一个产品、新建一个设备:
    在这里插入图片描述
    在这里插入图片描述
    2、数据流
    新建一个数据流模版:
    在这里插入图片描述
    使用API调试向数据模版推送数据:

    • 这里的URL格式为:http://api.heclouds.com/devices/设备ID/datapoints
    • APIKey为产品的MasterAPIKey或设备自己的APIKey
    • HTTP请求参数查询:https://open.iot.10086.cn/doc/art527.html#108

    在这里插入图片描述
    数据生成成功会返回

    {
        "errno": 0,
        "error": "succ"
    }
    

    生成多个数据后的数据流模版:
    生成多个数据后的数据流模版

    第三方服务器搭建

    这里使用的是java的数据推送服务端SDK,还有多种语言可选:https://open.iot.10086.cn/doc/multiprotocol/book/manual/httppush/sdk.html
    在这里插入图片描述
    下载好后用IDEA打开文件目录如下:
    在这里插入图片描述
    需要修改的是ReceiveDemo.java中的token与aeskey

    • aeskey在产品概况中查询
    • token与HTTP推送服务的token一致,用户自定义的。
      在这里插入图片描述
      application中配置的是tomcat运行的本地端口号,随意设置,之后代理服务器设置的时候与这个端口一致。按习惯设置为8080:
      在这里插入图片描述
      本地服务器就配置好了。然后使用代理,将本地服务暴露到外网中。
      打开ngrok,输入ngrok http 8080。需要注意的是,这里的端口8080可以根据需要替换成其他端口。这条命令的意思是将本地8080端口对应的服务暴露到外网中。
      运行后将出现如下结果:
      在这里插入图片描述
      Forwarding,第一个是http协议对应的外网地址,第二个是https协议对应的外网地址。这样,凡是访问 http://c79dcc56.ngrok.io的请求都将发送到localhost:8080。OneNET HTTP推送的地址就是这个http://c79dcc56.ngrok.io。

    HTTP推送

    增加一个全局推送:
    在这里插入图片描述
    连接成功后ngrok显示http 200
    在这里插入图片描述
    IDEA控制台返回以下信息:
    在这里插入图片描述
    此时,如果用API调试像该数据流模版发送一个数据,IDEA的控制台就会打印出该条消息:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • gin HTTP/2 服务器推送

    千次阅读 热门讨论 2020-11-01 19:47:26
    gin HTTP/2 服务器推送 http.Pusher只支持Go 1.8或更高版本,有关详细信息,请参阅golang博客 package main import ( "html/template" "log" "github.com/gin-gonic/gin" ) var html = template.Must...

    gin HTTP/2 服务器推送

    http.Pusher只支持Go 1.8或更高版本,有关详细信息,请参阅golang博客

    package main
    
    import (
    	"html/template"
    	"log"
    
    	"github.com/gin-gonic/gin"
    )
    
    var html = template.Must(template.New("https").Parse(`
    <html>
    <head>
      <title>Https Test</title>
      <script src="/assets/app.js"></script>
    </head>
    <body>
      <h1 style="color:red;">Welcome, Ginner!</h1>
    </body>
    </html>
    `))
    
    func main() {
    	r := gin.Default()
    	r.Static("/assets", "./assets")
    	r.SetHTMLTemplate(html)
    
    	r.GET("/", func(c *gin.Context) {
    		if pusher := c.Writer.Pusher(); pusher != nil {
    			// use pusher.Push() to do server push
    			if err := pusher.Push("/assets/app.js", nil); err != nil {
    				log.Printf("Failed to push: %v", err)
    			}
    		}
    		c.HTML(200, "https", gin.H{
    			"status": "success",
    		})
    	})
    
    	// Listen and Server in https://127.0.0.1:8080
    	r.RunTLS(":8080", "./testdata/server.pem", "./testdata/server.key")
    }
    展开全文
  • 二、响应式编程WebFlux之服务器推送

    千次阅读 2018-06-28 17:38:14
      我们可能会遇到一些需要网页与服务器端保持连接(起码看上去是保持连接)的需求,比如类似微信网页版的聊天类应用,比如需要频繁更新页面数据的监控系统页面或股票看盘页面。我们通常采用如下几种技术: 短...
  • Java向苹果服务器推送消息

    热门讨论 2016-05-26 14:24:55
    Java APNS推送消息
  • 服务器推送消息方法总结及实现(java)

    万次阅读 多人点赞 2018-10-24 11:00:26
    服务器推送消息方法总结及实现(java) 最近在进行web开发时,有用到服务端推送消息这个功能,相信大家在平常开发时,也经常会有这种需求。本文对常用的几种服务器推送消息方法进行整理和总结,并实现使用流的方式推送...
  • 现在我们接触的协议大多是htttp协议,在浏览器中通过http协议实现了单向的通信,浏览器发出请求,服务器在响应,一次客户端与服务器的请求就结束了,服务器不能主动响应客户端,主动往客户端返回数据,而在某些...
  • 背景 作为一个程序员,业余搞点自己的东西很正常,一般程序员都会有一两台自己的服务器,谁叫今天xx云搞活动,明天yy云搞活动呢。 自家的服务器用来跑爬虫,跑博客,或者跑一些个人...消息推送服务 我给他取了一个形...
  • 本文将介绍web常用的几种方式,希望给需要服务器推送消息的同学在选型上有一点启发。一、推送技术常用的集中实现的实现方式1.1 短连接轮询:前端用定时器,每间隔一段时间发送请求来获取数据是否更新,这种方式可...
  • COMET 和 WebSocket 技术来说,服务器推送事件的使用更简单,对服务器端的改动也比较小。对于某些类型的应用来说,服务器推送事件是最佳的选择。本文对服务器推送技术进行了详细的介绍,包含浏览器端和服务器端的...
  • dwr服务器推送,
  • git 本地向远程服务器推送代码

    千次阅读 2016-07-15 16:23:53
    要有一个远程的服务器上的仓库 登陆服务器新建一文件夹 mkdir test.git 进入此文件夹执行命令 git init –bare 将test.git文件夹初始化为远程的仓库 回到本地代码建立本地仓库 进入本地文件夹执行 git init –bare...
  • 利用服务器推送技术实现站内短消息(java)

    千次下载 热门讨论 2011-06-19 19:55:17
    利用服务器推送技术实现站内短消息(java) 让client与service建立一个长连接,不用client手动request,service会自动response,当有好友在线的时候,会自动把好友的信息加载到select里,点击好友发送短消息时,会在...
  • 使用socket接收服务器推送的消息

    千次阅读 2017-01-10 20:29:18
    项目中要实现在APP中接收服务端推送过来的json数据,并解析显示到用户界面。要实现此功能就必须和服务端保持长连接. 下面就我的socket实现的长连接,接收到消息后解析再展示给用户的案例/**handler中处理接收到的...
  • 服务器推送技术常用的三个解决方案,im消息服务架构
  • ajax+"服务器推送"简单web聊天

    热门讨论 2013-02-26 12:27:55
    jsp写的一个简单web聊天。“服务器推送”技术实现。测试工具与环境myeclipse 10+jboss 7+jdk6
  • java web 服务器推送技术--comet4j

    万次阅读 2015-07-17 15:45:11
    首先实现服务器推送技术一直一来是B/S应用开发的一块难题,因为是基于HTTP协议的,HTTP协议为无状态,单向性的协议,即,必须由客户端发起一个请求建立连接,服务器接收请求,把数据返回给客户端,然后释放连接。...
  • SignaR可以用来实现服务器向客户端推送信息,但是SignalR的每个Hub的生命周期很短,不能长期停留在内存里。因此,如果服务器想要对客户端推送消息时,应该采用signalR的一个“全局”的上下文来实现。此功能的应用...
  • 网络编程五-服务器推送技术

    万次阅读 2020-01-19 16:56:44
    一、服务器推送技术 1、服务器推送技术的兴起 2、应用场景 二、Ajax短轮询 1、定义 2、特点 三、Comet 3.1 AJAX 的长轮询 1、定义 2、特点 3.2 SSE 1、定义 2、特点 四、WebSocket通信 1、什么是...
  • 服务器推送技术之——SSE

    千次阅读 2018-08-18 14:58:02
    服务器推送技术在日常开发中较为常用。 SSE:Server send Event:服务端发送事件。 本项目推送技术是基于:当客户端向服务端发送请求,服务端会抓住这个请求不放,等有数据更新的时候才返回给客户端,当客户端...
  • pushlet实现服务器端向客户端推送消息,包括广播式推送、指定ID推送等等,本人总结
  • 服务器主动推送SSE技术介绍以及SpringBoot2.0实现方式
  • 服务器主动推送消息数据给客户端

    万次阅读 2019-02-11 15:17:14
    这个问题第一次是我在实现一个导师的方案的时候所发现的,一开始我需要实现服务器与客户端的密钥协商和数据传递,服务器需要主动分发(推送)密钥给客户端,因为以前没有做过相关编码,后来只能想到用反向连接,也...
  • 闪拍系统中,有个需求是关于服务器推送的方案。即:每秒刷新1次拍卖相关的信息(价格、出价时间、出价人等)。如何设计这个架构?(可以参考:传统轮询,ajax轮询,长连接,长轮询,WebSocket等技术). 要求: ...
  • Comet 是一种高级的Ajax技术,实现了服务器向页面实时推送数据的技术,应用场景有体育比赛比分和股票报价等。实现Comet有两种方式:长轮询与http流长轮询是短轮询的翻版,短轮询的方式是:页面定时向服务器发送请求...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 221,286
精华内容 88,514
关键字:

服务器推送