kon*_*Dos 7 java websocket spring-boot spring-websocket
我正在尝试使用 websockets 创建一个简单的聊天应用程序。我遵循了本教程: https: //www.baeldung.com/websockets-spring。
这是我的配置:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/chat");
registry.addEndpoint("/chat").withSockJS();
}
}
Run Code Online (Sandbox Code Playgroud)
@Controller
public class WebSocketController {
@MessageMapping("/chat")
@SendTo("/topic/messages")
public OutputMessage send(Message message) throws Exception {
return new OutputMessage(message.getFrom(), message.getText(), Instant.now());
}
}
Run Code Online (Sandbox Code Playgroud)
@Builder
@Getter
public class Message {
private final String from;
private final String text;
}
@Builder
@Getter
public class OutputMessage {
private final String from;
private final String text;
private final Instant date;
}
Run Code Online (Sandbox Code Playgroud)
现在我尝试使用Message请求模型发送消息。
但最后我得到:
2022-01-02 11:17:30.438 ERROR 26412 --- [nio-8080-exec-7] o.s.w.s.m.StompSubProtocolHandler : Failed to parse TextMessage payload=[{
"fr..], byteCount=44, last=true] in session 49df8471-5fe9-d785-c4c9-5058a712bb9b. Sending STOMP ERROR to client.
java.lang.IllegalArgumentException: No enum constant org.springframework.messaging.simp.stomp.StompCommand.{
at java.base/java.lang.Enum.valueOf(Enum.java:240) ~[na:na]
at org.springframework.messaging.simp.stomp.StompCommand.valueOf(StompCommand.java:28) ~[spring-messaging-5.3.14.jar:5.3.14]
at org.springframework.messaging.simp.stomp.StompDecoder.decodeMessage(StompDecoder.java:148) ~[spring-messaging-5.3.14.jar:5.3.14]
at org.springframework.messaging.simp.stomp.StompDecoder.decode(StompDecoder.java:115) ~[spring-messaging-5.3.14.jar:5.3.14]
at org.springframework.messaging.simp.stomp.BufferingStompDecoder.decode(BufferingStompDecoder.java:114) ~[spring-messaging-5.3.14.jar:5.3.14]
at org.springframework.web.socket.messaging.StompSubProtocolHandler.handleMessageFromClient(StompSubProtocolHandler.java:252) ~[spring-websocket-5.3.14.jar:5.3.14]
Run Code Online (Sandbox Code Playgroud)
我应该发送一些允许解析消息的附加标头吗?我没主意了。
小智 11
我遵循相同的教程来理解 WebSockets,但遇到了完全相同的问题。我发现请求正文中的换行符导致了问题。您的请求正文必须是:
{"from": "test", "text": "test"}
Run Code Online (Sandbox Code Playgroud)
在我做出这个改变之后,它对我有用。
| 归档时间: |
|
| 查看次数: |
3297 次 |
| 最近记录: |