spring4新特性Websocket(一)
2016-07-17 00:00
399 查看
摘要: socket,主要适应于长链接的应用场景:比如登入、聊天、消息推送等。本文就要结合spring英文版本,进行汉化!
1.构建开发环境
在pom.xml添加依赖包:
同时,要注意tomcat的版本,必须在版本7.45以上。
2.详细介绍
2.1 创建并配置一个WebSocketHandler
创建一个webSocket服务器就像实现一个WebsocketHandler,或者继续TextWebSocket。
同时需要进行配置,下面采用两种方式,一是注解,二是xml的方式。
第一种:
需要注意的是:@Configuration和@EnableWebSocket两个注解。
第二种方式 xml:
同时需要注意的是:The above is for use in Spring MVC applications and should be included in the configuration of a DispatcherServlet. However, Spring’s WebSocket support does not depend on Spring MVC. 意思就是说:以上是用于Spring MVC的应用中使用,应包括在DispatcherServlet的配置。然而,Spring的WebSocket的支持,不依赖于Spring MVC的。这句话很重要,知道配置在哪里。
2.2 自定义Websocket Handshake
Java类:
xml配置:
2.3部署方式
在Java的WebSocket API(JSR-356)提供了两种部署机制。第一个涉及在启动Servlet容器的classpath扫描(3 Servlet的功能);另一种是一个登记的API在Servlet容器初始化使用。这些都不机制,使其能够用于所有HTTP处理一个单一的“前端控制器” - 包括WebSocket的握手和所有其他HTTP请求 - 比如Spring MVC中的DispatcherServlet。
在web.xml进行配置:
然后,您可以选择性地启用按名称web片段,如Spring自己SpringServletContainerInitializer提供支持Servlet的3 Java的API初始化,如果需要的话:
2.4配置引擎
每个底层的WebSocket引擎公开的控制运行特征,例如消息缓冲区大小,空闲超时,和其他人的大小配置属性。在tomcat中:
注解:
xml配置:
1.构建开发环境
在pom.xml添加依赖包:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>4.0.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-messaging</artifactId> <version>4.0.1.RELEASE</version> </dependency>
同时,要注意tomcat的版本,必须在版本7.45以上。
2.详细介绍
2.1 创建并配置一个WebSocketHandler
创建一个webSocket服务器就像实现一个WebsocketHandler,或者继续TextWebSocket。
package com.test.spring; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.handler.TextWebSocketHandler; public class MyHlader extends TextWebSocketHandler{ @Override public void handleTextMessage(WebSocketSession session, TextMessage message) { // ... } }
同时需要进行配置,下面采用两种方式,一是注解,二是xml的方式。
第一种:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; @Configuration @EnableWebSocket public class WebSocketConnfig implements WebSocketConfigurer{ @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(myHandler(), "/myHandler"); } @Bean public WebSocketHandler myHandler() { return new MyHlader(); } }
需要注意的是:@Configuration和@EnableWebSocket两个注解。
第二种方式 xml:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:websocket="http://www.springframework.org/schema/websocket" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket.xsd"> <websocket:handlers> <websocket:mapping path="/myHandler" handler="myHandler"/> </websocket:handlers> <bean id="myHandler" class="org.springframework.samples.MyHandler"/> </beans>
同时需要注意的是:The above is for use in Spring MVC applications and should be included in the configuration of a DispatcherServlet. However, Spring’s WebSocket support does not depend on Spring MVC. 意思就是说:以上是用于Spring MVC的应用中使用,应包括在DispatcherServlet的配置。然而,Spring的WebSocket的支持,不依赖于Spring MVC的。这句话很重要,知道配置在哪里。
2.2 自定义Websocket Handshake
Java类:
@Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new MyHandler(), "/myHandler") .addInterceptors(new HttpSessionHandshakeInterceptor()); } }
xml配置:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:websocket="http://www.springframework.org/schema/websocket" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket.xsd"> <websocket:handlers> <websocket:mapping path="/myHandler" handler="myHandler"/> <websocket:handshake-interceptors> <bean class="org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor"/> </websocket:handshake-interceptors> </websocket:handlers> <bean id="myHandler" class="com.test.spring.MyHlader"/> </beans>
2.3部署方式
在Java的WebSocket API(JSR-356)提供了两种部署机制。第一个涉及在启动Servlet容器的classpath扫描(3 Servlet的功能);另一种是一个登记的API在Servlet容器初始化使用。这些都不机制,使其能够用于所有HTTP处理一个单一的“前端控制器” - 包括WebSocket的握手和所有其他HTTP请求 - 比如Spring MVC中的DispatcherServlet。
在web.xml进行配置:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <absolute-ordering/> </web-app>
然后,您可以选择性地启用按名称web片段,如Spring自己SpringServletContainerInitializer提供支持Servlet的3 Java的API初始化,如果需要的话:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <absolute-ordering> <name>spring_web</name> </absolute-ordering> </web-app>
2.4配置引擎
每个底层的WebSocket引擎公开的控制运行特征,例如消息缓冲区大小,空闲超时,和其他人的大小配置属性。在tomcat中:
注解:
@Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Bean public ServletServerContainerFactoryBean createWebSocketContainer() { ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean(); container.setMaxTextMessageBufferSize(8192); container.setMaxBinaryMessageBufferSize(8192); return container; } }
xml配置:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:websocket="http://www.springframework.org/schema/websocket" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket.xsd"> <bean class="org.springframework...ServletServerContainerFactoryBean"> <property name="maxTextMessageBufferSize" value="8192"/> <property name="maxBinaryMessageBufferSize" value="8192"/> </bean> </beans>
相关文章推荐
- spring4新特性webSocket(二)
- Freemarker2.3.23整合Spring
- java.lang.NoClassDefFoundError: javax/el/Expressio
- JavaRebel的简单配置
- SpringMvc整合Quartz实现定时任务项目源码
- 常见数据库字段类型与java.sql.Types的对应
- JAVA实现图片等比例缩略图的实现方式和相关工具
- mybatis02映射&动态sql&关联查询&spring整合mybatis
- java学习:log4j输出xml格式的日志文件(log4j2篇)
- 在ubuntu中配置java环境并运行java程序
- java基础/IO流(二)
- 设计模式之单例模式
- java 接口 抽象类 继承 重载 重写 多态
- JAVA 中BIO,NIO,AIO的理解
- struts2中的constant配置详解
- java基础/IO流/
- JavaWEB小知识学习--Java Mail
- Java命令注入之防护
- java的动态代理机制详解
- java基础之数据类型和变量