javascript - Spring WebSockets Stomp.subscribe 不工作

标签 javascript spring websocket stomp spring-websocket

我一直在尝试按照官方 Spring 指南实现一个基本的 Spring WebSockets 应用程序。我拥有的文件如下:

WebSocketConfig.java

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/chat");
        registry.setApplicationDestinationPrefixes("/message");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {
        stompEndpointRegistry.addEndpoint("/ws-connect").setAllowedOrigins("*").withSockJS();
    }
}

MessageController.java

@Controller
public class MessageController {

    @MessageMapping(value = "/test")
    @SendTo("/private")
    public Message message(String messageText) {
        Message message = new Message();
        message.setMessage(messageText);r);
        message.setTimestamp(new Date());
        return message;
    }
}

socket.js

var stompClient = null;

function connect() {
    var socket = new SockJS('http://localhost:8080/ws-connect');
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function(frame) {
        console.log('Connected: ' + frame);
        stompClient.subscribe('/chat/private', function(message) {
            console.log('Here');
            console.log('Message is: ' + message);
        });
        console.log('Here2');
    })
}

connect();

function sendMessage() {
    stompClient.send('/message/test', {}, "Hello self!");;
}

我的index.html中有一个按钮,单击该按钮会调用sendMessage函数,并且我会得到一个控制台日志,表明消息已发送,但是我从未在订阅函数中得到回复。客户端成功连接到 WebSocket 服务器,我在控制台中得到了输出。我做错了什么?

最佳答案

将/private 更改为/chat/private

按如下方式更改:

@Controller
public class MessageController {

    @MessageMapping(value = "/test")
    @SendTo("/chat/private")
    public Message message(String messageText) {
        Message message = new Message();
        message.setMessage(messageText);
        message.setTimestamp(new Date());
        return message;
    }
}

关于javascript - Spring WebSockets Stomp.subscribe 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45652438/

相关文章:

java - 使用 Spring RestTemplate 对对象进行 POST 参数

返回 javax.ws.rs.core.Response 对象的 Java JMX 调用方法不起作用(获取 NotSerializedException)

ssl - 如何让浏览器信任本地网络 wss ://connection?

iphone - NSURLConnection 在我得到 Error Domain=NSPOSIXErrorDomain Code=57 后不会响应

javascript - 我的 Bootstrap 模态无法正常工作

javascript - 如何使用 Javascript 打开模态框

spring - Spring Mvc中不同ViewResolver的使用

javascript - express 接收空物体

javascript - 帧中的动画持续时间是什么意思?

PHP Ratchet Web 套接字发送消息工作流