综合练习
简易聊天室 STOMP Demo。
40 分钟
综合练习
搭建 实验台简易聊天室:REST 创建会话 + STOMP 实时消息 + Next.js 客户端 + Nginx 反代。整合本 track 与 spring-boot-essentials、nextjs-essentials、nginx-essentials。
学习目标
- 端到端打通 CodeRoadMap 风格实时实验台
- 区分持久化(REST/MySQL)与在线推送(WS)
- 可选:Redis 在线人数(redis-pubsub)
任务清单
1. Backend(Spring Boot)
-
POST /api/lab/sessions创建实验间,返回sessionId -
GET /api/lab/sessions/{id}/messages历史消息(分页) - STOMP:
/app/chat.send→@SendTo("/topic/lab.{sessionId}")(ws-stomp) - ws-auth:
HandshakeInterceptor写入userId
// 消息入库仍走 Service,WS 只触发 save + 广播
@MessageMapping("/chat.send")
@SendTo("/topic/lab.{sessionId}")
public ChatMessage send(ChatMessage msg) {
return labChatService.saveAndReturn(msg);
}
2. Platform(Next.js)
- Server Component 拉 session + 历史(next-data)
- Client Component
LabChat:@stomp/stompjs订阅 + 发送(ws-client) - 断线重连与「连接中」状态 UI
3. Nginx
-
/api/→ backend REST;/ws→ backend WS(ws-nginx) - ≥ 3600s