代码部分:
@MessageMapping("/string")
@SendTo("topic/test2")
public String hello2(String a) throws Exception{
System.out.println(a);
Thread.sleep(2000);
//simpMessagingTemplate.convertAndSend("/topic/test2","Send From backend");
return "This is message 2";
}
<websocket:message-broker application-destination-prefix="/app" user-destination-prefix="/user">
<websocket:stomp-endpoint path="/websocket">
<websocket:sockjs/>
</websocket:stomp-endpoint>
<websocket:simple-broker prefix="/topic"/>
我使用sockJS和stomp.js发送消息。
var websocket = new SockJS('http://localhost:8080/todo/websocket');
var client = Stomp.over(websocket);
client.connect('benjamin','benjamin',function(msg){
client.send('/app/string',{},'string');
}
我在服务器端收到消息,但抛出异常:
org.springframework.messaging.converter.MessageConversionException: Could not read JSON: Unrecognized token 'string': was expecting ('true', 'false' or 'null')
at [Source: [B@31e018db; line: 1, column: 13]
Spring version 4.0.6-RELEASE
我看了代码,发现spring有3条消息转换器, 但是当春天使用时
MappingJackson2MessageConverter.convertFromInternal
隐蔽消息抛出此异常。应该弹簧捕获此异常并尝试使用其他转换器隐藏消息?这是一个错误吗?
如何解决它,有人可以帮助我?
答案 0 :(得分:1)
我也得到了这个问题。 我用一种糟糕的方法来解决它。
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
.......
@Override
public boolean configureMessageConverters(List<MessageConverter> messageConverters) {
messageConverters.add(new StringMessageConverter());
messageConverters.add(new ByteArrayMessageConverter());
return false;
}
}
禁用JsonConvertor