java - 使用 Spring 4 WebSocket 从 Java 推送消息

标签 java spring websocket spring-4 spring-websocket

我想将消息从 Java 推送到 WebSocket 客户端。我已经成功地让一个 js 客户端发送到服务器并在 2 个 js 客户端上收到一条消息,所以客户端代码工作正常。

我的问题是我想在 Java 应用程序中发生事件时启动发送。因此,例如,每次下 10 个订单时,都会向所有订阅的客户发送一条消息。这可能吗?

我当前的配置:

<websocket:message-broker application-destination-prefix="/app">
   <websocket:stomp-endpoint path="/hello">
        <websocket:sockjs/>
   </websocket:stomp-endpoint>
   <websocket:simple-broker prefix="/topic"/>
</websocket:message-broker>

@Controller
public class MessageController {
    @MessageMapping("/hello")
    @SendTo("/topic/greetings")
    public Greeting greeting() throws Exception {
       return new Greeting("Hello world");
    }
}

我希望能够做的是这样的事情:

public class OrderManager {
    @Autowired MessageController messageController;
    int orderCount = 0;

    public void processOrder(Order o) {
        orderCount++;
        if(orderCount % 10 == 0)
            messageController.greeting();
    }
}

所有订阅 websocket 的客户端都会收到一条消息。

最佳答案

您可以使用 SimpMessagingTemplate。 它是自动注册的。只需在您想要的任何 Spring bean 中 Autowiring 即可。

@Autowired
private SimpMessagingTemplate template;
...
this.template.convertAndSend("/topic/greetings", text);

关于java - 使用 Spring 4 WebSocket 从 Java 推送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24393480/

相关文章:

spring - 如何通过 Spring Social Facebook 注册新用户?

java - 将 mailx 设置为 Java SMTP 配置

java - 如何允许单个方法使用多个 @JmsListener 目的地

java - 由于 Admob 安全异常 : Permission Denial,如何在 admob 中阻止广告商

java - android, UTF8 - 如何确保 UTF8 用于共享首选项

java - J2EE 新手 - 在本地开发机器(无 Eclipse)上使用 Tomcat 7 服务器托管基于 Spring MVC 的项目

java - Spring CrudRepository : why to invent a new generic type S

php - 用于从 Linux 守护程序插入到客户端 Web 浏览器的 MySQL 数据的推送通知系统

javascript - WebSocket TCP 数据包聚集在一起?

javascript - 连接到 websocket 时如何添加 header ?