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自带富客户端编程元素,比如本地存储,长连接这些,这也是单页面程序兴起的重要原因。
真正是一个页面就是一个程序,有界面显示,有操作控件,有临时数据,有持久数据,有与服务器保持的连接。

长期欢迎项目合作机会介绍,项目收入10%用于酬谢介绍人。新浪微博:@冷镜,QQ:908789432。

时间: 2024-10-11 04:44:17

spring支持的websocket的相关文章

Spring学习(一)tomcat加载web.xml、以及项目集成Spring支持

tomcat容器加载web.xml 一. 1 .启动一个 WEB 项目的时候, WEB 容器会去读取它的配置文件 web.xml ,读取 <listener> 和 <context-param> 两个结点. 2 .紧急着,容创建一个 ServletContext ( servlet 上下文),这个 web 项目的所有部分都将共享这个上下文. 3 .容器将 <context-param> 转换为键值对,并交给 servletContext . 4 .容器创建 <li

基于Spring支持的通信

概述 基于Spring支持的客户端编程,包括发送方客户端.接收方客户端. 发送方客户端代码:jms-producer 接收方客户端代码:jms-consumer 本文有pdf版本:基于Spring支持的通信.pdf 发送方客户端 这里基于demo进行说明.这个demo将往example.queue和example.topic各发一条信息. 文件目录结构 1 src/main/resources/ 2 |---- jndi.properties 3 |---- spring-beans.xml 4

【Spring】Spring系列4之Spring支持JDBC

4.Spring支持JDBC 4.1.使用JdbcTemplate简化JDBC开发 也可以这么用(不推荐): 4.2.使用NamedParameterJdbcTemplate

【Spring】Spring系列5之Spring支持事务处理

5.Spring支持事务处理 5.1.事务准备 以上代码结构与AOP的前置通知.返回通知.异常通知.后置通知一样. 5.2.声明式事务 5.2.1.基于注解 5.2.2.基于配置文件 5. 3.事务传播属性 5.4.事务其他属性 5.4.1.事务的隔离级别 5.4.2.事物的回滚属性 5.4.3.超时与只读属性 5.5.使用xml文件配置事务

在web项目中使用cxf开发webservice,包含spring支持

本文主要介绍了,如何使用cxf内置的例子,学会开发webserivce,在web项目中使用,且包含spring支持. webserivce的开发可以使用cxf或者axis,好像还有httpclient等等.以前也多次研究过,上网搜过很多别人的例子来看,写过代码下来,但没有总结过,少废话,上干货. 1. 到cxf的官网下载jar包.我用的是以前下载下来的apache-cxf-2.7.6.zip,并非最新版本.下载完成后,解压后,目录结构如下左图: 打开其中的samples文件夹,其内包含了很多例子

Maven学习记录(三)--实战引入Spring支持

一.创建项目 maven项目在IDEA下创建是相当容易 然后给定项目坐标,确定即可 二.完善项目目录结构 IDEA创建完项目结构和标准的maven项目有些差异,这个时候就需要我们手动调整一下 更改前结构 更改后 三.引入spring支持 引入框架无非三步走: 1. 引入架包 2. 创建配置文件 3. 加载配置文件 接下来的步骤也是按照这三步走方法来的 首先是pom.xml文件,增加spring和springMVC需要的包 <properties> <!-- springframe 版本控

Spring Boot——Using WebSocket to build an interactive web application

Using WebSocket to build an interactive web application This guide walks you through the process of creating a “Hello, world” application that sends messages back and forth between a browser and a server. WebSocket is a thin, lightweight layer above

spring boot下WebSocket消息推送

WebSocket协议 WebSocket是一种在单个TCP连接上进行全双工通讯的协议.WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范.WebSocket API也被W3C定为标准. WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输 STOMP协议 STOMP是面向文本的消息传

Spring消息之WebSocket

一.WebSocket简介 WebSocket 的定义?WebSocket是HTML5下一种全双工通信协议.在建立连接后,WebSocket服务器端和客户端都能主动的向对方发送和接收数据,就像Socket一样. WebSocket 的由来?众所周知,HTTP协议有“无连接”.“不可靠”.“尽最大努力”的特点.WebSocket的出现可以看成是HTTP协议为了支持长连接所打的一个大补丁.首先,由 IETF 制定发布了WebSocket 协议.后来,HTML5为了在Web端支持WebSocket协议