在 Spring Boot 中使用 WebSocket,您可以使用 Spring 的 `spring-boot-starter-websocket` 模块。以下是一个简单的 WebSocket 示例,包括服务端和客户端。
### 1. 创建 Spring Boot 项目
首先,创建一个新的 Spring Boot 项目,添加以下依赖到您的 `pom.xml` 文件中:
```xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
</dependencies>
```
### 2. 编写 WebSocket 服务端
创建一个 WebSocket 处理器类,处理连接和消息:
```java
import org.springframework.stereotype.Component;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.WebSocketMessage;
import org.springframework.web.socket.WebSocketSession;
@Component
public class MyWebSocketHandler implements WebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("Connection established with session id: " + session.getId());
session.sendMessage(new TextMessage("Connection established. Welcome!"));
}
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
System.out.println("Received message: " + message.getPayload());
session.sendMessage(new TextMessage("Received your message: " + message.getPayload()));
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
System.err.println("Error in WebSocket connection: " + exception.getMessage());
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
System.out.println("Connection closed with session id: " + session.getId());
}
@Override
public boolean supportsPartialMessages() {
return false;
}
}
```
### 3. 配置 WebSocket
创建配置类`WebSocketConfig`,添加 `@EnableWebSocket` 注解:
```java
import com.hellwalker.biz.websocket.handler.MyWebSocketHandler;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
@EnableWebSocket
@Configuration
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyWebSocketHandler(), "/my-websocket").setAllowedOrigins("*");
}
}
```
在上述代码中,`@EnableWebSocket` 启用 WebSocket 支持,并通过 `WebSocketConfigurer` 接口实现了 WebSocket 的配置。`MyWebSocketHandler` 处理了 WebSocket 连接和消息。
### 4. 编写 WebSocket 客户端
您可以使用浏览器的 JavaScript 或者其他 WebSocket 客户端来测试 WebSocket 连接。以下是一个简单的 JavaScript 客户端的例子:
```html
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Demo</title>
</head>
<body>
<h1>WebSocket Demo</h1>
<div id="messages"></div>
<script>
const socket = new WebSocket("ws://localhost:8080/my-websocket");
socket.onopen = function(event) {
console.log("WebSocket connection opened.");
sendMessage("Hello, WebSocket!");
};
socket.onmessage = function(event) {
console.log("Received message: " + event.data);
displayMessage(event.data);
};
socket.onclose = function(event) {
console.log("WebSocket connection closed.");
};
function sendMessage(message) {
socket.send(message);
console.log("Sent message: " + message);
}
function displayMessage(message) {
const messagesDiv = document.getElementById("messages");
messagesDiv.innerHTML += "<p>" + message + "</p>";
}
</script>
</body>
</html>
```
### 5. 运行应用
运行您的 Spring Boot 应用,然后访问 `http://localhost:8080`,打开开发者工具查看浏览器的控制台,您将看到 WebSocket 连接的日志。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
# 基于Spring Boot的二维码登录系统 ## 项目概述 本项目是一个基于Spring Boot框架的二维码登录系统,集成了多种业务案例,如二维码登录、微信扫码登录、微信支付、报表生成、文件下载等。项目旨在提供一个可以直接在业务系统中使用的解决方案。 ## 主要功能 - **二维码登录**:支持通过扫描二维码进行登录。 - **微信扫码登录**:集成微信开放平台,实现微信扫码登录。 - **微信支付**:提供微信支付接口,支持在线支付功能。 - **报表生成**:支持生成各种业务报表。 - **文件下载**:提供文件下载功能,方便用户获取所需文件。 ## 技术栈 - **Spring Boot**:作为基础框架,简化配置和开发。 - **WebSocket**:用于实时通信,支持扫码登录等实时交互功能。 - **Redis**:作为缓存和消息队列,提高系统性能和响应速度。 - **JWT**:用于生成和验证Token,保证接口安全。 - **Lombok**:简化Java代码,减少样板代码。 ## 项目结构 - **springboot-biz-common**:通用工具
资源推荐
资源详情
资源评论
收起资源包目录
基于Spring Boot的二维码登录系统.zip (58个子文件)
pom.xml 6KB
springboot-qrcode-login
pom.xml 944B
src
test
java
com
hellwalker
biz
qrcodelogin
DevicePropertiesTest.java 4KB
main
resources
asset
a002886504324fdca2a9dc68707f94c3.png 255KB
application.properties 189B
二维码设计.md 18KB
java
com
hellwalker
biz
qrcodelogin
QRCodeLoginApp.java 2KB
controller
ProductController.java 3KB
ScanLoginController.java 6KB
LoginController.java 5KB
CustomErrorController.java 3KB
service
LoginTokenService.java 4KB
ScanService.java 8KB
model
CodeStatus.java 1KB
Product.java 4KB
CodeVO.java 4KB
User.java 2KB
util
BizCodeUtil.java 3KB
RedisKeyUtil.java 3KB
config
JwtFilter.java 5KB
DeviceProperties.java 6KB
RedisConfig.java 4KB
FilterConfig.java 2KB
.gitignore 366B
README.md 3KB
LICENSE 11KB
springboot-weixin-scanlogin
pom.xml 1KB
src
test
java
com
hellwalker
biz
weixinlogin
WechatConfigTest.java 4KB
main
resources
application.properties 387B
templates
page_error.html 196B
index.html 189B
微信登录流程.md 4KB
java
com
hellwalker
biz
weixinlogin
constant
OauthType.java 2KB
LoginType.java 2KB
controller
WeChatController.java 7KB
IndexController.java 3KB
ApiLoginController.java 3KB
CustomErrorController.java 3KB
config
WechatOpenConfig.java 3KB
WechatAccountConfig.java 3KB
WeixinScanLoginApp.java 3KB
springboot-biz-websocket
pom.xml 916B
src
main
resources
application.properties 121B
templates
index.html 992B
java
com
hellwalker
biz
websocket
WebsocketApp.java 3KB
handler
MyWebSocketHandler.java 3KB
controller
IndexController.java 2KB
config
WebSocketConfig.java 3KB
README.md 4KB
README.md 4KB
springboot-biz-common
pom.xml 698B
src
main
java
com
hellwalker
common
utils
QRCodeUtil.java 11KB
JwtTokenUtil.java 7KB
UUIDUtils.java 2KB
HttpUtils.java 6KB
exception
BizException.java 3KB
GlobalExceptionHandler.java 3KB
result
CommonResult.java 4KB
共 58 条
- 1
资源评论
t0_54coder
- 粉丝: 2377
- 资源: 1629
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功