feat: 增加websocket通知

hunan
huangfeng 9 months ago
parent 997ea95114
commit 068f16f603

@ -40,10 +40,6 @@
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- SpringBoot 拦截器 -->
@ -51,6 +47,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>

@ -0,0 +1,20 @@
package com.shxy.xymanager_framework.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
/**
* ServerEndpointExporter
*
* Bean使@ServerEndpointwebsocket endpoint
*
* @return ServerEndpointExporter
*/
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}

@ -0,0 +1,67 @@
package com.shxy.xymanager_framework.socket;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@ServerEndpoint(value = "/websocket")
@Component
@Slf4j
public class WebSocketServer {
private static List<Session> sessionPools = new ArrayList<>();
@OnOpen
public void onOpen(Session session) {
sessionPools.add(session);
log.info("当前socket连接数" + sessionPools.size());
}
@OnClose
public void onClose(Session session) {
sessionPools.remove(session);
log.info("剩余socket连接数" + sessionPools.size());
}
public void sendMessage(String message) {
Iterator<Session> it = sessionPools.listIterator();
while (it.hasNext()) {
Session session = it.next();
try {
session.getBasicRemote().sendText(message);
} catch (Exception ignore) {
}
}
}
//收到客户端信息
@OnMessage
public void onMessage(Session session, String message) {
try {
if (!"1".equals(message)) {
message = message.replaceAll("吗", "")
.replaceAll("b", "c")
.replaceAll("a", "b")
.replaceAll("你", "我")
.replaceAll("", "!")
.replaceAll("\\?", "!");
session.getBasicRemote().sendText(message);
}
} catch (IOException ignore) {
}
}
//错误时调用
@OnError
public void onError(Session session, Throwable e) {
sessionPools.remove(session);
log.info("剩余socket连接数" + sessionPools.size());
}
}
Loading…
Cancel
Save