我正尝试让我的WebSocket客户端(浏览器)向服务器发送消息。服务器应该使用@MessageMapping
注释捕获消息,如下所示:
@Controller
public class GameController {
@MessageMapping("/game/{id}")
public void onMessage(@DestinationVariable String id,Message message) {
System.out.println("reached");
System.out.println(id);
System.out.println(message);
}
}
以上片段可以正常工作,因为“Message”对象来自于org.springframework.messaging.Message。
然而,当我尝试将传入的消息转换为自己的POJO时,如下所示:
@MessageMapping("/game/{id}")
public void onMessage(@DestinationVariable String id,ChatMessage message) {
System.out.println("reached");
System.out.println(id);
System.out.println(message);
}
该函数不再被调用。阅读了这篇教程之后,我们可以定义POJO来封装JSON字符串,并且@MessageMapping应该能够自动将JSON转换为我们的定制Java对象,但我尝试后发现并没有生效(消息映射函数没有被调用)。
我想知道问题出在哪里,希望有人能给我指个方向。需要注意的一点是,该教程使用了Spring Boot,而我使用的是Spring MVC。我怀疑Spring Boot可能拥有某些我没有的自动配置属性,但我已经尝试配置了我的Jackson ObjectMapper,并在WebSocketConfig中注册它(但没有成功)。
希望能得到任何帮助。