Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
promotion-service
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
promotion-service
Commits
2e53164f
提交
2e53164f
authored
11月 19, 2025
作者:
吕本才
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(config): 并发发送ping,增加日志打印查看问题
上级
b5f97239
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
8 行增加
和
6 行删除
+8
-6
WebSocketConfig.java
...java/com/wangxiaolu/promotion/config/WebSocketConfig.java
+1
-1
TemporaryActivityTaskClockSocketHandler.java
...on/websocket/TemporaryActivityTaskClockSocketHandler.java
+7
-5
没有找到文件。
src/main/java/com/wangxiaolu/promotion/config/WebSocketConfig.java
浏览文件 @
2e53164f
...
...
@@ -33,7 +33,7 @@ public class WebSocketConfig implements WebSocketConfigurer {
}
@Bean
public
Web
SocketHandler
webSocketHandler
()
{
public
TemporaryActivityTaskClock
SocketHandler
webSocketHandler
()
{
return
new
TemporaryActivityTaskClockSocketHandler
();
}
...
...
src/main/java/com/wangxiaolu/promotion/websocket/TemporaryActivityTaskClockSocketHandler.java
浏览文件 @
2e53164f
...
...
@@ -7,20 +7,20 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.socket.CloseStatus
;
import
org.springframework.web.socket.TextMessage
;
import
org.springframework.web.socket.WebSocketMessage
;
import
org.springframework.web.socket.WebSocketSession
;
import
org.springframework.web.socket.handler.TextWebSocketHandler
;
import
java.io.IOException
;
import
java.util.Map
;
import
java.util.concurrent.*
;
@Slf4j
@Component
//
@Component
public
class
TemporaryActivityTaskClockSocketHandler
extends
TextWebSocketHandler
{
// 存储在线会话(用户ID -> 会话)
private
static
final
Map
<
String
,
WebSocketSession
>
sessions
=
new
ConcurrentHashMap
<>();
private
static
final
ConcurrentHash
Map
<
String
,
WebSocketSession
>
sessions
=
new
ConcurrentHashMap
<>();
// 心跳检测线程池
private
final
ScheduledExecutorService
heartBeatExecutor
=
new
ScheduledThreadPoolExecutor
(
1
,
...
...
@@ -35,6 +35,7 @@ public class TemporaryActivityTaskClockSocketHandler extends TextWebSocketHandle
private
final
ObjectMapper
objectMapper
=
new
ObjectMapper
();
public
TemporaryActivityTaskClockSocketHandler
()
{
log
.
info
(
"TemporaryActivityTaskClockSocketHandler 初始化"
);
// 初始化心跳检测(每30秒发送一次ping)
heartBeatExecutor
.
scheduleAtFixedRate
(
this
::
sendHeartBeat
,
30
,
30
,
TimeUnit
.
SECONDS
);
}
...
...
@@ -75,7 +76,7 @@ public class TemporaryActivityTaskClockSocketHandler extends TextWebSocketHandle
log
.
error
(
"用户["
+
userId
+
"]消息格式错误:"
+
payload
);
sendToUser
(
userId
,
"用户["
+
userId
+
"]消息格式错误:"
);
}
handleMessageType
(
messageBean
);
//
handleMessageType(messageBean);
}
}
private
void
handleMessageType
(
MessageBean
messageBean
)
{
...
...
@@ -103,7 +104,7 @@ public class TemporaryActivityTaskClockSocketHandler extends TextWebSocketHandle
/**
* 发送心跳(ping)
*/
private
void
sendHeartBeat
()
{
private
void
sendHeartBeat
()
{
for
(
Map
.
Entry
<
String
,
WebSocketSession
>
entry
:
sessions
.
entrySet
())
{
WebSocketSession
session
=
entry
.
getValue
();
String
userId
=
entry
.
getKey
();
...
...
@@ -115,6 +116,7 @@ public class TemporaryActivityTaskClockSocketHandler extends TextWebSocketHandle
try
{
session
.
close
();
}
catch
(
IOException
ex
)
{
log
.
error
(
"关闭会话失败"
,
ex
);
ex
.
printStackTrace
();
}
sessions
.
remove
(
userId
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论