spring4.0 websocket问题

时间:2014-08-24 04:46:00

标签: spring websocket

代码部分:

@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 

隐蔽消息抛出此异常。应该弹簧捕获此异常并尝试使用其他转换器隐藏消息?这是一个错误吗?

如何解决它,有人可以帮助我?

1 个答案:

答案 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