Я пытался заставить simpMessagingTemplate отправлять в websocket весной, но безрезультатно.Из того, что я вижу в связанных сообщениях stackoverflow и других руководствах, я предоставил необходимую конфигурацию и отображение путей.
Мой код показан ниже:
RestController (который я использую для вызоваотправка сообщения на веб-сокет):
@RestController
public class RestControllers {
@Autowired
private SimpMessagingTemplate template;
@RequestMapping("/test")
public String doTest() {
Message m = new Message();
m.setFrom("foo");
m.setText("bar");
template.convertAndSend("/app/chat/test-topic", m);
return m.toString();
}
}
Контроллер:
@Controller
public class ChatController
{
@MessageMapping("/chat/{topic}")
@SendTo("/topic/messages")
public OutputMessage send(@DestinationVariable("topic") String topic,
Message message) throws Exception
{
System.out.println("THE MESSAGE WAS RECEIVED:" + message.toString());
return new OutputMessage(message.getFrom(), message.getText(), topic);
}
}
Конфигурация:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer
{
@Override
public void configureMessageBroker(MessageBrokerRegistry config)
{
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) //?? alternative only?
{
registry.addEndpoint("/chat").setAllowedOrigins("*").withSockJS();
}
}