Java Spring:向websocket客户端发送消息

Java Spring:向websocket客户端发送消息,java,spring,spring-boot,rabbitmq,spring-websocket,Java,Spring,Spring Boot,Rabbitmq,Spring Websocket,我正在用Spring Boot、RabbitMQ和WebSocket作为POC构建一个webchat,但最后一点我被绊倒了:WebSocket 我希望我的ws-Client连接到一个特定的端点,比如/room/{id},当一条新消息到达时,我希望服务器向客户端发送响应,但我搜索了一些类似的东西,但没有找到 当前,当消息到达时,我使用RabbitMQ处理它,如 container.setMessageListener(new MessageListenerAdapter(){

我正在用Spring Boot、RabbitMQ和WebSocket作为POC构建一个webchat,但最后一点我被绊倒了:WebSocket
我希望我的ws-Client连接到一个特定的端点,比如
/room/{id}
,当一条新消息到达时,我希望服务器向客户端发送响应,但我搜索了一些类似的东西,但没有找到

当前,当消息到达时,我使用RabbitMQ处理它,如

container.setMessageListener(new MessageListenerAdapter(){
            @Override
            public void onMessage(org.springframework.amqp.core.Message message, Channel channel) throws Exception {
                log.info(message);
                log.info("Got: "+ new String(message.getBody()));
            }
        });

我想要的是,不是记录它,而是将它发送到客户端,例如:
websocketManager.sendMessage(新字符串(message.getBody())

好的,我想我得到了它,对于每个需要它的人,下面是答案:

首先,需要将WS依赖项添加到pom.xml中

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-messaging</artifactId>
</dependency>
注意:我使用的是STOMP,所以客户端应该像这样连接

<script type="text/javascript">
    $(document).ready(function() {
        var messageList = $("#messages");
        // defined a connection to a new socket endpoint
        var socket = new SockJS('/stomp');
        var stompClient = Stomp.over(socket);
        stompClient.connect({ }, function(frame) {
            // subscribe to the /topic/message endpoint
            stompClient.subscribe("/room.2", function(data) {
                var message = data.body;
                messageList.append("<li>" + message + "</li>");
            });

        });
    });
</script>
并用

webSocket.convertAndSend(channel, new String(message.getBody()));

convertAndSend的目标参数“channel”来自哪里?channel是一个字符串。这是我发送消息的“房间”,类似于
“/room.”.concat(message.getRoom().getUid().toString())
@Autowired
private SimpMessagingTemplate webSocket;
webSocket.convertAndSend(channel, new String(message.getBody()));