spring支持的websocket
首发:个人博客
必须说明:这篇博文只用于自己记录,使用spring的websocket支持一定要看官方文档,权威又简明,不推荐看不专业又啰嗦的国产博文。
已尝试了两种方法,当然,不管哪种方法都要先添加maven依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
</dependency><dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
</dependency>
第一种方法,对应文档中的25.2这一节:
1)声明个Handler组件:
@Component
public class MyHandler extends TextWebSocketHandler {@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) {
try {
session.sendMessage(message);
} catch (IOException e) {
e.printStackTrace();
}
}}
2)在spring配置文件中配置该组件,注意要写在springmvc的配置文件中而不是spring主配置文件中:
<!-- websocket配置1 -->
<websocket:handlers>
<websocket:mapping path="/myHandler" handler="myHandler"/>
</websocket:handlers>
当然,添加这段配置之前要在xml的根节点beans节点上补充这个声明让spring认识websocket前缀:
xmlns:websocket="http://www.springframework.org/schema/websocket"
3)这就OK了
第二种方法,对应文档中的25.4这一节:
实际是参考了官方的引导文档(一定要看),然后基于参考手册把java配置改为xml配置了。
1)在某个controller中声明:
@MessageMapping("/say")
@SendTo("/topic/greetings")
public String greeting(String message) throws Exception {
return message;
}
2)在springmvc配置文件中添加:
<websocket:message-broker application-destination-prefix="/app">
<websocket:stomp-endpoint path="/hello">
<websocket:sockjs />
</websocket:stomp-endpoint>
<websocket:simple-broker prefix="/topic" />
</websocket:message-broker>
3)测试的页面太长了就不贴了,到这里找吧,在页面的中下部分。
如果懒得找就看官方提供的示例程序中测试页面。
总结:
websocket的意义在让浏览器和服务器保持长连接。
在websocket之前如果想保持长连接,或者采用轮询的方法,或者采用服务器端阻塞的方法,显然都浪费性能。
如果用服务器端阻塞的话,编程中读请求(阻塞的)和写请求(由用户操作触发)也是分开的。
websocket直接就分开它们俩了,浏览器随时可以向服务器中写指令,服务器也随时可以向浏览器写指令,两者都有触发函数监听对方。
这是对无状态的http协议非常重要的补充。
html5技术很大方面就是让B/S自带富客户端编程元素,比如本地存储,长连接这些,这也是单页面程序兴起的重要原因。
真正是一个页面就是一个程序,有界面显示,有操作控件,有临时数据,有持久数据,有与服务器保持的连接。
spring支持的websocket的更多相关文章
- 【Java Web开发学习】Spring MVC整合WebSocket通信
Spring MVC整合WebSocket通信 目录 ========================================================================= ...
- spring boot 集成 websocket 实现消息主动推送
spring boot 集成 websocket 实现消息主动 前言 http协议是无状态协议,每次请求都不知道前面发生了什么,而且只可以由浏览器端请求服务器端,而不能由服务器去主动通知浏览器端,是单 ...
- Spring Boot 集成 WebSocket 实现服务端推送消息到客户端
假设有这样一个场景:服务端的资源经常在更新,客户端需要尽量及时地了解到这些更新发生后展示给用户,如果是 HTTP 1.1,通常会开启 ajax 请求询问服务端是否有更新,通过定时器反复轮询服务端响应的 ...
- Spring框架之websocket源码完全解析
Spring框架之websocket源码完全解析 Spring框架从4.0版开始支持WebSocket,先简单介绍WebSocket协议(详细介绍参见"WebSocket协议中文版" ...
- 【Spring】Spring系列5之Spring支持事务处理
5.Spring支持事务处理 5.1.事务准备 以上代码结构与AOP的前置通知.返回通知.异常通知.后置通知一样. 5.2.声明式事务 5.2.1.基于注解 5.2.2.基于配置文件 5. 3.事务传 ...
- 【Spring】Spring系列4之Spring支持JDBC
4.Spring支持JDBC 4.1.使用JdbcTemplate简化JDBC开发 也可以这么用(不推荐): 4.2.使用NamedParameterJdbcTemplate
- 在web项目中使用cxf开发webservice,包含spring支持
本文主要介绍了,如何使用cxf内置的例子,学会开发webserivce,在web项目中使用,且包含spring支持. webserivce的开发可以使用cxf或者axis,好像还有httpclient ...
- Spring Boot之WebSocket
一.项目说明 1.项目地址:https://github.com/hqzmss/test01-springboot-websocket.git 2.IDE:IntelliJ IDEA 2018.1.1 ...
- 8 -- 深入使用Spring -- 6...1 Spring支持的事务策略
8.6.1 Spring支持的事务策略 JTA.JDBC.Hibernate Java EE应用的传统事务有两种策略:全局事务和局部事务.全局事务由应用服务器管理,需要底层服务器的JTA(Java T ...
随机推荐
- C# HttpWebRequest 绝技
http://www.sufeinet.com/thread-6-1-1.html 万能框架.分布式......
- thinkphp接手机网站接口
首先说下,支付宝提供的demo不一定完全正确,可能回缺少些步骤,所以,最好按照规则文档的步骤参照demo写. 先说遇到的问题: 1.错误0001,缺少partner.service等必参数 最初选择的 ...
- MySQL注释符
mysql注释符有三种:1.#...(注释至行末,推荐)2.-- ...(两条短线之后又一个空格)3./*...*/(多行注释) 1.
- LeetCode Game of Life
原题链接在这里:https://leetcode.com/problems/game-of-life/ 题目: According to the Wikipedia's article: " ...
- 弹窗插件layer
layer的插件的地址:http://layer.layui.com/简单使用: layer.open({ type: , //page层 area: ['500px', '300px'], titl ...
- JQuery:JQuery添加元素
JQuery:添加元素通过 jQuery,可以很容易地添加新元素/内容.添加新的HTML内容.我们将学习用于添加新内容的四个jQuery方法: append() - 在被选元素的结尾插入内容 prep ...
- Eight Popular Open Source Android Game Engines
https://software.intel.com/en-us/blogs/2012/05/14/eight-popular-open-source-android-game-engines
- 【转】Tomcat7启动的总过程 (有时间自己写下tomcat8的)
首先,说明tomcat8和tomcat7的启动过程不一样,这篇是针对tomcat7的. Tomcat启动的总过程 通过上面的介绍,我们总体上清楚了各个组件的生命周期的各个阶段具体都是如何运作的.接下来 ...
- c语言的一些库
1利用DEv编程的时候遇见sleep函数 ..注意S大写,并添加#include<windows.h>.
- Leetcode: Evaluate Division
Equations are given in the format A / B = k, where A and B are variables represented as strings, and ...