如何从正常请求调用@SendTo,即@RequestMapping

我已经使用Spring MVC实现了Web Socket,它对我来说工作正常,即从一个浏览器到另一个浏览器,该浏览器使用此代码为这些套接字打开。

@MessageMapping("/hello")
    @SendTo("/topic/greetings")
    public HelloMessage greeting(HelloMessage message) throws Exception {
        Thread.sleep(3000); // simulated delay
        return message;
    }

任何人都可以帮我从普通的api控制器打电话给@SendTo(“/topic/greetings”)的人。我尝试过使用它,但它对我不起作用

@RequestMapping(value = "/sendMessage")
    @SendTo("/topic/greetings")
    public HelloMessage sendMessage() throws Exception {
        return new HelloMessage((int) Math.random(), "This is Send From Server");
    }

对此有什么想法吗?

谢谢


答案 1

我已经找到了解决方案

@Autowired
private SimpMessagingTemplate template;


@RequestMapping(value = "/sendMessage")
public void sendMessage() throws Exception {
    this.template.convertAndSend("/topic/greetings", new HelloMessage(
            (int) Math.random(), "This is Send From Server"));
}

通过使用它,我们可以发送消息来打开WebSocket。

谢谢


答案 2

推荐