`
wiselyman
  • 浏览: 2093964 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
Group-logo
点睛Spring4.1
浏览量:82327
74ae1471-94c5-3ae2-b227-779326b57435
点睛Spring MVC4...
浏览量:130798
社区版块
存档分类
最新评论

05点睛Spring MVC 4.1-服务器端推送

 
阅读更多

5.1 服务器端推送

  • SSE(server send event)是一种服务器端向浏览器推送消息的技术,而不是我们常规的浏览器像server请求然后响应;
  • 当我们需要使用server向浏览器主动推送数据的时候,请考虑使用该项技术,而不是考虑具有双向通讯功能的websocket;
  • 以前我们用ajax轮询server也能实现,服务器负担大;
  • sse原理是向server请求一次后,server会挂住请求不放(此时浏览器里请求状态是pending),等有数据后才返回给浏览器,然后再发起下一次请求,以此类推;
  • 所有主流浏览器均支持服务器发送事件,除了 Internet Explorer(6,7,8,9);

5.2 示例

  • 服务器推送控制器
package com.wisely.web;

import java.util.Random;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class SSEController {
    //注意produces="text/event-stream"
    @RequestMapping(value="/push",produces="text/event-stream")
    public @ResponseBody String push(){
         Random r = new Random();
         try {
                 Thread.sleep(5000);
         } catch (InterruptedException e) {
                 e.printStackTrace();
         }
         return "data:Testing 1,2,3" + r.nextInt() +"\n\n";
    }
}
  • 页面代码
<div id="msg_from_server"></div>
<script type="text/javascript" src="<c:url value="/js/jquery.js" />"></script>
<script type="text/javascript">
if (!!window.EventSource) {
       var source = new EventSource('push'); //为http://localhost:8080/testSpringMVC/push
       s='';
       source.addEventListener('message', function(e) {

           s+=e.data+"<br/>"
           $("#msg_from_server").html(s);

       });

       source.addEventListener('open', function(e) {
            console.log("连接打开.");
       }, false);

       source.addEventListener('error', function(e) {
            if (e.readyState == EventSource.CLOSED) {
               console.log("连接关闭");
            } else {
                console.log(e.readyState);    
            }
       }, false);
    } else {
            console.log("没有sse");
    }
</script>
  • 效果

 

 

新书推荐《JavaEE开发的颠覆者: Spring Boot实战》,涵盖Spring 4.x、Spring MVC 4.x、Spring Boot企业开发实战。

 

京东地址:http://item.jd.com/11894632.html

当当地址:http://product.dangdang.com/23926195.html

亚马逊地址:http://www.amazon.cn/图书/dp/B01D5ZBFUK/ref=zg_bsnr_663834051_6 

淘宝地址:https://item.taobao.com/item.htm?id=528426235744&ns=1&abbucket=8#detail

 

 

 

或自己在京东、淘宝、亚马逊、当当、互动出版社搜索自选。

 


2
1
分享到:
评论
6 楼 beauty9235 2016-05-15  
这样真有效率吗?我看到后台一直不停的push,如果有海量用户,不会挂掉?

测试code
[https://github.com/tomlxq/gs-spring-boot/tree/master/initial][/https://github.com/tomlxq/gs-spring-boot/tree/master/initial]
5 楼 www88485400 2015-11-28  
使用了 configureContentNegotiation 后 推送服务就无法运行了,不知道这个该如何解决
4 楼 wiselyman 2015-06-07  
Miny-k 写道

           s+=e.data+"<br/>"
           $("#msg_from_server").html(s);
页面提示   s+= ·····后面少了  “;” 不知道是不是对的··
另外,文章很不错!一直用的4.1的jar包开发3.2的程序,这下真是太好了!受益颇多

javascript不写;是可以,为了良好编程习惯还是要写,这个是我写漏了
3 楼 Miny-k 2015-06-06  

           s+=e.data+"<br/>"
           $("#msg_from_server").html(s);
页面提示   s+= ·····后面少了  “;” 不知道是不是对的··
另外,文章很不错!一直用的4.1的jar包开发3.2的程序,这下真是太好了!受益颇多
2 楼 wiselyman 2015-05-27  
semmy 写道
这跟长连接有什么区别,不都要服务端挂住请求线程,不是同样会耗费,服务端的资源吗?


这个类比于ajax不停向后台刷减少请求数,提高时效性

和长连的websocket,websocket是双向长链接,而sse完成一次请求后,需要浏览器再发一次请求
1 楼 semmy 2015-05-27  
这跟长连接有什么区别,不都要服务端挂住请求线程,不是同样会耗费,服务端的资源吗?

相关推荐

    4.1-细胞分化形成组织.pptx

    细胞分化是生物体发育过程中的关键环节,它使得单一的受精卵细胞逐渐发展成为具有各种不同特性的细胞群体,最终构建出复杂的生命体。在医学领域,理解细胞分化对于研究胚胎发育、组织修复和疾病的发生机制至关重要。...

    点睛网赚论坛源码整站程序+10W数据【送主动推送工具】

    点睛网赚论坛源码整站程序+10W数据【送主动推送工具】 安装教程https://www.ygwzjs.cn/post/260.html 百度推送工具https://www.ygwzjs.cn/post/181.html 效果演示:z-www.seoheimao.cn 【全新优化】点睛网论坛整站...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    4.5.3 服务器端推送技术 106 4.6 Spring MVC 的测试 113 4.6.1 点睛 113 4.6.2 示例 114 第三部分 实战Spring Boot 第5 章 Spring Boot 基础 122 5.1 Spring Boot 概述 122 5.1.1 什么是Spring Boot 122 5.1.2 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    4.5.3 服务器端推送技术 106 4.6 Spring MVC 的测试 113 4.6.1 点睛 113 4.6.2 示例 114 第三部分 实战Spring Boot 第5 章 Spring Boot 基础 122 5.1 Spring Boot 概述 122 5.1.1 什么是Spring Boot 122 5.1.2 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    4.5.3 服务器端推送技术 106 4.6 Spring MVC 的测试 113 4.6.1 点睛 113 4.6.2 示例 114 第三部分 实战Spring Boot 第5 章 Spring Boot 基础 122 5.1 Spring Boot 概述 122 5.1.1 什么是Spring Boot 122 5.1.2 ...

    国元点睛-20230825-国元期货-23页.pdf

    国元点睛-20230825-国元期货-23页

    stasm4.1版本-人脸识别77个特征点提取

    **STASM4.1版本-人脸识别77个特征点提取** STASM,全称为Shape Tracking and Analysis by Shape Models,是一种广泛应用于人脸识别领域的算法,尤其在面部特征点定位方面表现出色。该算法的核心在于通过形状模型来...

    新点睛网论坛整站程序 带全套数据打包(送主动推送工具)

    【全新优化】点睛网论坛整站程序 带全套数据打包(送主动推送工具) 安装教程https://www.ygwzjs.cn/post/260.html 专用收录推送神器https://www.ygwzjs.cn/post/181.html 效果演示:z-www.seoheimao.cn 【全新优化...

    BugScan圈子沙龙之议题点睛(2015) - 安全技术资料汇总(共5份).zip

    bugscan发展历程以及框架改进.pdf 基于正则类sql注入防御的绕过技巧.pdf 如何优雅的穿透linux内网.pdf 花式玩转bugscan插件.pdf 过滤型插件与反向代理的火花.pdf

    网络眼睛-服务器监控系统

    还可以监控每台服务器的在线状态,不需要其他服务器安装客户端,就可以直接在服务器列表内添加服务器IP就可以监控服务器在线状态,如果服务器不在线,系统将会以短信的方式给您的手机发短信,不收取任何费用!...

    PS眼睛糖果滤镜eye-candy-7.1.0.1203汉化破解版(附安装视频)

    alien skin Eye Candy 7是一款非常强大的PS滤镜插件。包含了金属字、火焰、闪电、纹理等30多种实用特效,是设计师必备的插件之一。

    司机眼睛状态标记---应用OpenCV人脸检测与模板匹配方法

    使用OpenCV1.0实现了眼睛状态识别,首先用harr检测眼睛,然后用模板匹配的方法标记眼睛状态。 程序需要使用Eyes45x11.xml Mouth25x15.xml Nose25x15.xml,将其放到C:\Program Files\OpenCV\data\haarcascades目录下...

    眼睛穴位图-睛明穴-取穴方法

    眼睛穴位图-睛明穴-取穴方法 方便经常上网的朋友使用

    chrome 眼睛护航插件 Care-your-Eyes_v7.1.12.crx

    把网页背景变成眼睛保护色或适合夜晚阅读的夜间模式,一些无法变色的小区块可以通过单击进行变色;

    点睛文本编码查询(文本的字符串转换工具)

    软件名:点睛文本编码查询 功能:本软件用于将文本的字符串转换为 Text、ASCII、Default、Unicode、BigEndianUnicode、UTF-8、UTF-7、GBK、BIG5 之间的互相转换,用于文本查询。转换结果使用十六进制表示。

    点睛网赚论坛源码 网赚项目平台搭建源码+10W数据【送百度秒收录神器】

    点睛网论坛整站源码程序+10W+数据(送主动推送工具) 【全新优化】点睛网论坛整站程序 带全套数据打包(送主动推送工具 首家专用) 带数据打包,采用Discuz论坛程序。 源码特色: 已做过SEO优化布局,整站源码拿去后...

    360点睛使用手册(2019.08).pdf

    360点睛使用手册是360官方于2019年推出的移动客户端软件,主要功能是推广管理。该手册详细介绍了软件的使用方法和功能特点,适用于广告主进行随时随地的账户投放管理。 首先,手册中的产品介绍部分指出,360点睛是...

    api-document:java spring-mvc文件收集

    中文说明 | |说明维护过项目的人应该都有体会, 如果接口文档是单独编写的(org-mode、markdown、rap 甚至是 word 等), 随着项目周期的推进, 接口文档和真实代码之间的差距会越来越远.基于 swagger 的一些细节不那么让...

    点睛 内码转换器

    "点睛内码转换器"是一款专为处理文本编码问题设计的工具,它能够帮助用户在不同的字符编码之间进行转换,以解决由于编码不匹配导致的乱码问题。在计算机科学领域,字符编码是用于表示文本的一系列规则,常见的有...

    360点睛多语言加密示例和密码加密调试工具.zip

    《360点睛营销平台多语言加密及调试技术详解》 360点睛营销开放平台是一款由360公司推出的广告投放和营销管理工具,它为开发者提供了丰富的API接口,以帮助开发者构建和优化自己的广告系统。在这个名为"360点睛多...

Global site tag (gtag.js) - Google Analytics