This commit is contained in:
罗祥
2019-08-22 14:39:51 +08:00
parent 0544a18997
commit 2c989f9db3
26 changed files with 844 additions and 1643 deletions

View File

@ -1,36 +1,34 @@
# spring websocket注解方式
# Spring WebSocket注解方式
## 目录<br/>
<a href="#一说明">一、说明</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#11-项目结构说明">1.1 项目结构说明</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#12-依赖说明">1.2 依赖说明</a><br/>
<a href="#二spring-websocket">二、spring websocket</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#21-创建消息处理类继承自TextWebSocketHandler">2.1 创建消息处理继承自TextWebSocketHandler</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#22-创建websocket-握手拦截器如果没有权限拦截等需求这一步不是必须的">2.2 创建websocket 握手拦截器(如果没有权限拦截等需求,这一步不是必须的)</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#23-创建websocket的配置类">2.3 创建websocket的配置类</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#24-前端-websocket-的实现">2.4 前端 websocket 的实现</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#25-简单登录的实现">2.5 简单登录的实现</a><br/>
## 正文<br/>
<nav>
<a href="#一项目说明">一、项目说明</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#11-项目结构">1.1 项目结构</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#12-基本依赖">1.2 基本依赖</a><br/>
<a href="#二实现-WebSocket">二、实现 WebSocket</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#21-消息处理">2.1 消息处理</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#22--握手拦截器">2.2 握手拦截器</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#23-配置-WebSocket">2.3 配置 WebSocket</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#24-前端-WebSocket">2.4 前端 WebSocket</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#25-实现简单登录">2.5 实现简单登录</a><br/>
</nav>
## 一、项目说明
## 一、说明
### 1.1 项目结构
### 1.1 项目结构说明
1. 项目模拟一个简单的群聊功能,为区分不同的聊天客户端,登录时候将临时用户名存储在 session 当中
2. webconfig 包是基础注解的方式配置 web在 spring-base-annotation 项目中已经讲解过每个类作用
3. CustomHander 为消息的自定义处理器
4. CustomHandershakerInterceptor 为自定义的 websocket 的握手拦截器;
5. webSocketConfig 是 websocket 的主要配置类;
6. 项目以 web 的方式构建。
- 项目模拟一个简单的群聊功能,为区分不同的聊天客户端,登录时候将临时用户名存储在 session 当中;
- webconfig 包是基础注解的方式配置 web在 spring-base-annotation 项目中已经讲解过每个类作用;
- CustomHander 为消息的自定义处理器
- CustomHandershakerInterceptor 为自定义的 websocket 的握手拦截器
- webSocketConfig 是 websocket 的主要配置类
- 项目以 web 的方式构建。
<div align="center"> <img src="https://github.com/heibaiying/spring-samples-for-all/blob/master/pictures/spring-websocket-annotation.png"/> </div>
### 1.2 基本依赖
### 1.2 依赖说明
除了基本的 spring 依赖外,还需要导入 webSocket 的依赖包
除了基本的 Spring 依赖外,还需要导入 WebSocket 的依赖:
```xml
<!--spring webSocket 的依赖包 -->
@ -43,13 +41,14 @@
## 二、spring websocket
## 二、实现 WebSocket
#### 2.1 创建消息处理继承自TextWebSocketHandler
### 2.1 消息处理
继承自TextWebSocketHandler创建消息处理类
```java
/**
* @author : heibaiying
* @description : 自定义消息处理类
*/
public class CustomHandler extends TextWebSocketHandler {
@ -98,11 +97,12 @@ public class CustomHandler extends TextWebSocketHandler {
```
#### 2.2 创建websocket 握手拦截器(如果没有权限拦截等需求,这一步不是必须的)
### 2.2 握手拦截器
创建websocket 握手拦截器(如果没有权限拦截等需求,这一步不是必须的):
```java
/**
* @author : heibaiying
* @description : 可以按照需求实现权限拦截等功能
*/
public class CustomHandshakeInterceptor extends HttpSessionHandshakeInterceptor {
@ -123,13 +123,9 @@ public class CustomHandshakeInterceptor extends HttpSessionHandshakeInterceptor
}
```
#### 2.3 创建websocket的配置类
### 2.3 配置 WebSocket
```java
/**
* @author : heibaiying
* @description :websocket 配置
*/
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@ -141,7 +137,7 @@ public class WebSocketConfig implements WebSocketConfigurer {
}
```
#### 2.4 前端 websocket 的实现
### 2.4 前端 WebSocket
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
@ -185,9 +181,9 @@ public class WebSocketConfig implements WebSocketConfigurer {
```
#### 2.5 简单登录的实现
### 2.5 实现简单登录
```java
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>