【问题标题】:Push message from Java with Spring 4 WebSocket使用 Spring 4 WebSocket 从 Java 推送消息
【发布时间】:2014-08-15 02:52:36
【问题描述】:

我想将消息从 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 的客户端都会收到一条消息。

【问题讨论】:

    标签: java spring websocket spring-4 spring-websocket


    【解决方案1】:

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

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

    【讨论】:

    • 我实现了你的方法,现在我得到一个异常'无法启动 bean subProtocolWebSocketHandler'。我创建了一个关于它的帖子。如果可以的话,请看一下。谢谢。 stackoverflow.com/questions/37638396/…
    • 嗨,我做了同样的过程,但我的 websocket 没有被调用,我没有任何错误。
    猜你喜欢
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 2018-07-14
    • 1970-01-01
    相关资源
    最近更新 更多