Spring 打开弹簧腹板座后,其连接中断

Spring 打开弹簧腹板座后,其连接中断,spring,websocket,stomp,spring-websocket,sockjs,Spring,Websocket,Stomp,Spring Websocket,Sockjs,我有以下WebSocket配置: @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableS

我有以下WebSocket配置:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/portfolio").withSockJS();
    }

}
我通过SimpMessageTemplate发送卡夫卡数据,如下所示:

public class KafkaReceiver {
    @Autowired
    private SimpMessagingTemplate simpMessagingTemplate;

    @KafkaListener(topics = "metrics", groupId = "metrics")
    public void receive(ConsumerRecord<?, ?> record) {
        MetricRecord m = new MetricRecord(new Long(record.offset()), record.key().toString(), record.value().toString());
        this.simpMessagingTemplate.convertAndSend("/topic/records", m.toString());
    }
}
当我在浏览器中运行此命令时,出现以下错误:

Opening Web Socket...

GET http://localhost:9999/portfolio/records/info?t=1507027267841 404 (Not Found)
r._start @ sockjs.min.js:2
(anonymous) @ sockjs.min.js:2
setTimeout (async)
r @ sockjs.min.js:2
r @ sockjs.min.js:3
r @ sockjs.min.js:2
r._getReceiver @ sockjs.min.js:2
r.doXhr @ sockjs.min.js:2
(anonymous) @ sockjs.min.js:2
setTimeout (async)
r @ sockjs.min.js:2
r @ sockjs.min.js:2
connect @ metricsApp.js:2
onclick @ VM53 metrics:1

Whoops! Lost connection to http://localhost:9999/portfolio/records
有什么想法吗?我找不到一个与我的解决方案不同的有效解决方案。提前感谢。

请检查此行:

var socket = new SockJS('/portfolio/records');
您应该将插座连接到:

var socket = new SockJS('/${YourApplicationContextIfItExists}/${endPoint}')
假设您没有应用程序上下文,它应该是

var socket = new SockJS('/portfolio')
请注意,可能还有其他问题,但我认为这可能会有所帮助。

检查这一行:

var socket = new SockJS('/portfolio/records');
您应该将插座连接到:

var socket = new SockJS('/${YourApplicationContextIfItExists}/${endPoint}')
假设您没有应用程序上下文,它应该是

var socket = new SockJS('/portfolio')
请注意,可能还有其他问题,但我认为这可能会有所帮助。

registry.addEndpoint(“/portfolio”).setAllowedOrigins(“*”).withSockJS()

您在创建StompEndpoint时尝试过这个吗?

registry.addEndpoint(“/portfolio”).SetAllowedOriginates(*”).withSockJS()

你在你的脚踩点上试过这个吗