博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌
博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦
uniapp微信小程序面试题软考题免费使用,还可以使用微信支付,扫码加群。由于维护成本问题得不到解决,可能将停止线上维护。
文末获取联系精彩专栏推荐订阅 不然下次找不到哟
Java项目案例《100套》
https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》https://blog.csdn.net/qq_57756904/category_12173599.html
有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。
最后再送一句:最好是学会了,而不是学废了!!
2
在 Spring Boot 中整合 WebSocket 非常简单,可以通过 spring-boot-starter-websocket
依赖快速实现。以下是详细步骤和代码示例:
在 pom.xml
中引入 WebSocket 支持:
org.springframework.boot
spring-boot-starter-websocket
运行 HTML
创建一个配置类启用 WebSocket,并注册端点:
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;
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myWebSocketHandler(), "/ws")
.setAllowedOrigins("*"); // 允许跨域
}
@Bean
public WebSocketHandler myWebSocketHandler() {
return new MyWebSocketHandler();
}
}
自定义处理器,处理连接、消息、关闭等事件:
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
public class MyWebSocketHandler extends TextWebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) {
System.out.println("连接建立: " + session.getId());
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) {
String payload = message.getPayload();
System.out.println("收到消息: " + payload);
// 回复客户端
session.sendMessage(new TextMessage("Server回应: " + payload));
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
System.out.println("连接关闭: " + session.getId());
}
}
通过 JavaScript 连接后端 WebSocket 服务:
运行 HTML
使用 SimpMessagingTemplate
(需启用STOMP协议):
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Component;
@Component
public class WebSocketService {
@Autowired
private SimpMessagingTemplate messagingTemplate;
public void broadcast(String message) {
messagingTemplate.convertAndSend("/topic/messages", message);
}
}
修改配置类支持 STOMP:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketStompConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/stomp").setAllowedOrigins("*").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");
registry.setApplicationDestinationPrefixes("/app");
}
}
继承 BinaryWebSocketHandler
:
public class MyBinaryHandler extends BinaryWebSocketHandler {
@Override
protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) {
ByteBuffer payload = message.getPayload();
// 处理二进制数据(如图片、文件)
}
}
测试工具:使用 WebSocket Online Tester 或 Postman(新版支持WebSocket)。
日志排查:检查 WebSocketSession
的开启、关闭和异常事件。
跨域问题:
通过 .setAllowedOrigins("*")
允许跨域(生产环境应限制域名)。
心跳保活:
客户端需定时发送心跳(如 ping/pong
)防止连接超时。
集群部署:
多实例时需借助 Redis 或 RabbitMQ 广播消息(参考 @EnableRedisWebSocketMessageBroker
)。
src/ ├── main/ │ ├── java/ │ │ └── com/example/ │ │ ├── config/WebSocketConfig.java │ │ ├── handler/MyWebSocketHandler.java │ │ └── Application.java │ └── resources/ │ └── static/index.html
通过以上步骤,Spring Boot 即可快速整合 WebSocket,实现实时通信功能。根据需求选择原生 WebSocket 或 STOMP 协议扩展功能。
3