# WebSocket的使用
# 基本概念
# 消息代理
# STOMP协议
STOMP(Simple Text Oriented Messaging Protocol)是一个简单的文本导向的消息协议,它被设计用来在客户端和服务器之间发送和接收消息。STOMP协议本身是基于文本的,它定义了一系列简单的命令,这些命令用于订阅、发送和发布消息。
主要特点:
- 简单性:STOMP协议的语法简单明了,易于理解和实现。
- 文本导向:使用文本消息格式,如JSON或XML,便于调试和理解。
- 命令导向:通过一系列预定义的命令(例如
CONNECT
,SEND
,SUBSCRIBE
,UNSUBSCRIBE
,ACK
,NACK
)进行交互。 - 无状态性:每次命令执行后,客户端和服务器之间的连接会保持开放状态,直到另一端关闭连接。
- 可扩展性:虽然STOMP协议本身很简单,但它允许通过头部字段扩展协议,以支持额外的功能和消息格式。
# 使用
# 注解的使用
情况1:如果只需要进行简单的通信,不需要消息代理和STOMP协议支持,那么只需要实现WebSocketConfigurer
接口,使用的注解是@EnableWebSocket
情况2:情况2:如果需要消息代理和STOMP协议支持,那么需要实现WebSocketMessageBrokerConfigurer
接口,使用的注解是@EnableWebSocketMessageBroker
情况3: 如果你的应用需要同时支持简单的WebSocket连接和基于STOMP的消息处理,可以同时实现这两个接口
# 问题
# 注解使用错误
org.springframework.context.ApplicationContextException: Failed to start bean 'subProtocolWebSocketHandler'; nested exception is java.lang.IllegalArgumentException: No handlers
例如实现的接口是WebSocketConfigurer
,结果使用的注解是@EnableWebSocketMessageBroker