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

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

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

学习

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

更多

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

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
WebSocket 实时通信/课时/Spring 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综合练习

Spring WebSocket

@EnableWebSocket、WebSocketHandler。

40 分钟

Spring WebSocket

Spring Boot 通过 spring-boot-starter-websocket 暴露 WebSocket 端点。实验台底层先用原生 Handler,再上 STOMP 抽象(ws-stomp)。

学习目标

  • 启用 @EnableWebSocket 并注册 Handler
  • 实现 WebSocketHandler 收发文本消息
  • 理解与 sb-mvc 共存的路由

依赖与配置

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(labChatHandler(), "/ws/lab")
                .setAllowedOrigins("https://coderoadmap.local");
    }

    @Bean
    LabChatHandler labChatHandler() {
        return new LabChatHandler();
    }
}

Handler 示例

public class LabChatHandler extends TextWebSocketHandler {

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message)
            throws IOException {
        String payload = message.getPayload();
        session.sendMessage(new TextMessage("echo:" + payload));
    }
}

TextWebSocketHandler 适合 JSON 字符串;二进制用 BinaryWebSocketHandler。

与 REST 分工

路径协议职责
/api/lab/sessionsREST创建实验、持久化记录
/ws/labWebSocket实时消息广播

业务数据仍落 MySQL(sb-jdbc);WS 只负责 在线态 推送。

练习

  • 注册 /ws/echo,浏览器连上发 "hi" 看回显
  • 在 Handler 里打印 session.getId() 与 remoteAddress
  • 对比 STOMP 版为何更易扩展(预习 )
ws-stomp

小结

@EnableWebSocket + Handler = 最小可用 WS 服务端。 下一课 STOMP 消息模型。

加载本节练习…
← 上一课协议与握手下一课 →STOMP 消息