Cloud foundry cloudfoundry Web服务上的Spring websocket运行错误
我已经解决了这个问题,这段代码帮助我自动检测服务器是https还是http。然后Javascript只需创建正确的链接SockJS,即可订阅到服务器Web套接字。 代码如下: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 === '' ? '' : ':
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: