Cloud foundry cloudfoundry Web服务上的Spring websocket运行错误

Cloud foundry cloudfoundry Web服务上的Spring websocket运行错误,cloud-foundry,spring-websocket,Cloud Foundry,Spring Websocket,我已经解决了这个问题,这段代码帮助我自动检测服务器是https还是http。然后Javascript只需创建正确的链接SockJS,即可订阅到服务器Web套接字。 代码如下: var protocol = location.protocol; var hostname = location.hostname; var port = location.port; var url_prefix = protocol + "//" + hostname + (port === '' ? '' : ':

我已经解决了这个问题,这段代码帮助我自动检测服务器是https还是http。然后Javascript只需创建正确的链接SockJS,即可订阅到服务器Web套接字。

代码如下:

var protocol = location.protocol;
var hostname = location.hostname;
var port = location.port;
var url_prefix = protocol + "//" + hostname + (port === '' ? '' : ':' + port) + contextPath;
var sock = new SockJS(url_prefix + '/connectsocket');

Spring websocket在本地主机上运行正常:

var socket = new SockJS('http: //localhost:9091/connect/sockjs');
var socket = new SockJS('http: //bics.cfapps.io/connect/sockjs');
var socket = new SockJS('http: //bics.cfapps.io:4443/connect/sockjs');
var socket = new WebSocket('ws://bics.cfapps.io:4443/connect/sockjs');
@Configuration
@EnableWebSocket
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/bics");
    }
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/connect/sockjs").withSockJS();
    }
}
bics.cfapps.io上的Spring websocket运行错误:

var socket = new SockJS('http: //localhost:9091/connect/sockjs');
var socket = new SockJS('http: //bics.cfapps.io/connect/sockjs');
var socket = new SockJS('http: //bics.cfapps.io:4443/connect/sockjs');
var socket = new WebSocket('ws://bics.cfapps.io:4443/connect/sockjs');
@Configuration
@EnableWebSocket
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/bics");
    }
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/connect/sockjs").withSockJS();
    }
}
错误消息console.log:

添加端口4443,但仍会在bics.cfapps.io上出错:

var socket = new SockJS('http: //localhost:9091/connect/sockjs');
var socket = new SockJS('http: //bics.cfapps.io/connect/sockjs');
var socket = new SockJS('http: //bics.cfapps.io:4443/connect/sockjs');
var socket = new WebSocket('ws://bics.cfapps.io:4443/connect/sockjs');
@Configuration
@EnableWebSocket
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/bics");
    }
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/connect/sockjs").withSockJS();
    }
}
错误消息console.log:

添加端口4443&ws,但仍会在bics.cfapps.io上出错:

var socket = new SockJS('http: //localhost:9091/connect/sockjs');
var socket = new SockJS('http: //bics.cfapps.io/connect/sockjs');
var socket = new SockJS('http: //bics.cfapps.io:4443/connect/sockjs');
var socket = new WebSocket('ws://bics.cfapps.io:4443/connect/sockjs');
@Configuration
@EnableWebSocket
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/bics");
    }
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/connect/sockjs").withSockJS();
    }
}
错误消息console.log:

我的代码配置:

var socket = new SockJS('http: //localhost:9091/connect/sockjs');
var socket = new SockJS('http: //bics.cfapps.io/connect/sockjs');
var socket = new SockJS('http: //bics.cfapps.io:4443/connect/sockjs');
var socket = new WebSocket('ws://bics.cfapps.io:4443/connect/sockjs');
@Configuration
@EnableWebSocket
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/bics");
    }
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/connect/sockjs").withSockJS();
    }
}

只是指出gregturn在评论中给出的答案是正确的:

PWS不通过
ws:
支持普通WebSocket,但仅通过
wss:
保护WebSocket。此外,它们在非标准端口4443上工作


请参阅

请发布您的websocket配置和日志。连接是否来自同一来源?@ThanhNguyenVan请查看我的更新问题。我的项目在本地计算机上运行正常,但在cloudfoundry上运行错误。。。错误正如我在上面描述的一样,同样的问题也伴随着我,你发现了什么吗阅读此?您需要wss:not ws: