java - 如何从普通请求调用即@RequestMapping 调用@SendTo

标签 java spring-mvc websocket spring-websocket java-websocket

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

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

任何人都可以帮助我从普通的 api Controller 调用@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");
    }

对此有什么想法吗?

谢谢

最佳答案

我已经找到解决办法了

@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。

谢谢

关于java - 如何从普通请求调用即@RequestMapping 调用@SendTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31608584/

相关文章:

java - 如何将使用数据库的java桌面应用程序导出到其他电脑?

java - 为每个 Dao 类创建 BaseDAO

forms - Spring MVC - 部分绑定(bind)到表单时如何不丢失字段值

spring - 如何在 Spring 中保护对静态资源的访问

node.js - AWS Elastic Beanstalk 与 ALB : Node Websocket times out

javascript - WebSocket 可以即时切换其 binaryType 吗?

java - 网络连接测试/故障排除工具?

java - android scala eclipse 插件的 searchView 小部件中的过滤方法

java - 尝试连接到 Web 套接字服务器时不断收到 No X509TrustManager implementation available 错误

java - 为什么 nameList.add 不同步?