# websocket-demo **Repository Path**: wangwei_7387/websocket-demo ## Basic Information - **Project Name**: websocket-demo - **Description**: websocket demo - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-05-13 - **Last Updated**: 2025-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # webscoket-demo ## 介绍 spirngboot + websocket 的三种实现方式的示例。 使用了三个模块区分,分别是 `jsr` 、 `spring-websocket`、`stomp`; - **jsr** JDK(JSR 356)提供的原生 WebSocket 支持。 - `@ServerEndpoint`:将一个普通的 POJO 类标记为 WebSocket 服务端点,指定客户端连接的 URI 路径。 - `@OnOpen`、`@OnMessage`、`@OnClose`、`@OnError`:分别对应连接建立、消息到达、连接关闭和错误发生等生命周期回调。 > 通过 `@PathParam("name")` 方式 - **spring-websocket** 原生 WebSocket 的 Spring 化。 - `@EnableWebSocket`:在 Spring 应用中启用对原生 WebSocket 的支持 - `WebSocketConfigurer`:配置类,将自定义的 `WebSocketHandler` 和 `HandshakeInterceptor` 类注册进去。 - `WebSocketHandler`:处理建立连接,消息到达、连接关闭和错误发生等生命周期的回调 - `HandshakeInterceptor`:握手拦截器,在`握手之前`和`握手之后连接建立之前`添加处理逻辑 > 通过请求参数方式(?id=1&name=2)传参。即 ws://127.0.0.1/ws?Authorization=111 - **stomp** 开启更高层次的消息分发框架,内置对 STOMP 协议的支持,并可配置简单内存代理或外部消息中间件(RabbitMQ、Kafka 等) | 特性/注解 | JSR 356 (`@ServerEndpoint` 等) | Spring 原生 (`@EnableWebSocket`) | Spring STOMP 模式 (`@EnableWebSocketMessageBroker`) | | ------------------- | ------------------------------ | -------------------------------- | ----------------------------------------------------- | | **协议级别** | 原生 WebSocket | 原生 WebSocket | WebSocket + STOMP | | **配置方式** | 注解配合容器 | 注解 + `WebSocketConfigurer` | 注解 + `WebSocketMessageBrokerConfigurer` | | **消息模型** | 点对点 | 点对点 | 发布–订阅、点对点、广播 | | **回退支持** | 需手动集成 SockJS | 可选 `.withSockJS()` | 内置 `.withSockJS()` | | **代理/集群支持** | 无 | 内存模式,仅单实例 | 支持内存代理;可切换到 RabbitMQ、Kafka 等外部消息代理 | | **注解式消息路由** | 无 | 无 | 支持 `@MessageMapping`、`@SendTo` 等注解 | | **消息确认/持久化** | 无 | 无 | 可利用外部代理提供确认与持久化 |