CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
WebSocket 实时通信/课时/综合练习
RawBlame
课时目录12 节

WebSocket 实时通信

  1. 01WebSocket 是什么
  2. 02协议与握手
  3. 03Spring WebSocket
  4. 04STOMP 消息
  5. 05浏览器客户端
  6. 06Next.js 与 WebSocket
  7. 07鉴权与安全
  8. 08水平扩展
  9. 09SSE 对照
  10. 10Nginx 反代升级
  11. 11测试与调试
  12. 12综合练习

综合练习

简易聊天室 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
proxy_read_timeout

4. 验收

  • 两个浏览器窗口同 sessionId 互发消息实时可见
  • 刷新后 REST 拉取历史,WS 收新消息
  • 未登录握手 403;错误 Origin 被拒绝

扩展(可选)

  • Redis 记录在线人数,REST GET .../presence 展示
  • 双 backend 实例 + ip_hash 或 StompBrokerRelay(ws-scale)
  • 通知条用 SSE(ws-sse)与聊天 WS 并存

小结

REST 存、WS 推、Nginx 通、Next 展示 = CodeRoadMap 实时实验台闭环。 websockets-essentials 完结;深入安全见 sb-security,缓存见 redis-essentials。

加载本节练习…
← 上一课测试与调试