当前位置: 首页 > 知识库问答 >
问题:

如何从普通请求调用(即@RequestMapping)调用@SendTo

萧建木
2023-03-14

我已经使用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(“/主题/问候”)吗?我试过用这个,但对我不起作用。

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

对此有什么想法吗?

谢谢

共有1个答案

公西马鲁
2023-03-14

我已经找到了解决办法

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

谢谢

 类似资料:
  • 有人能告诉我用两种不同的方法调用同一个函数的区别,以及编译器在这两种情况下到底做了什么;比如:

  • 我试图从javascript本身调用另一个域中的服务。我可以请求跨域服务。但我无法从服务中检索信息。一些我如何被同源政策阻止。请帮我找出代码中的错误。 OPTIONS/SolartisGeoCodelookupService/Service/DrawRegions HTTP/1.1 主机:Cross_Domain_IP_Address 用户代理:Mozilla/5.0(x11;Linux x86_

  • 如何使用cURL调试CORS请求?到目前为止,我找不到任何“模拟”飞行前请求的方法。

  • 我的应用程序是一个非WebSpring启动应用程序,使用WebClient进行内部get调用。 每次我启动它时,它都会返回我。 问题与webclient调用有关:当我执行block()时,一切正常。当我试图让它保持被动时,它抛出一个异常。 以下是我的主要方法: 这是我的网络客户电话: 以下是异常跟踪:

  • 问题内容: 我在我的应用程序中使用JSF框架。我需要在“阶段侦听器”类中的渲染响应阶段之前运行特定的脚本。 运行此脚本的条件是,如果触发的请求是Ajax请求,则需要运行该脚本;如果触发的请求是Http请求,则不应运行该脚本。 谁能帮我区分收到的请求吗? 问题答案: Ajax请求通常具有一个请求标头。在JSF中,您可以通过获得请求标头。