【发布时间】:2018-07-20 21:06:14
【问题描述】:
我有一个名为 cde-service 的基于 Java Spring Boot 的 Web 服务和一个名为 abc-app 的基于 Angular 5 的前端。
abc-app 使用 websocket 连接将日志数据发送到 cde-service,然后 cde-service 对客户端日志数据进行处理。
我已经在 localhost 上测试了应用程序,它们按预期工作。
但是,当我将 cde-service 部署到 Pivotal Cloud Foundry 时,websocket 连接失败并显示 403 Forbidden。我已完成更改以允许 CORS。
任何关于为什么会发生这种情况的指示都会非常有帮助。
cde 服务:
// Snippet from the Websocket Configuration.
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/websocketConnection").setAllowedOrigins("*").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic", "/queue");
registry.setApplicationDestinationPrefixes("/app");
}
// Snippet from the Controller.
@MessageMapping("/logs")
public void handleLogs(LogModel logModel) {
logService.logHandler(logModel);
}
abc-应用:
var sock = new SockJS("http://host_name/websocketConnection");
var stomp = Stomp.over(sock);
stomp.connect('guest', 'guest', function(frame) {
console.log('---- Established Connection ----');
});
stomp.send("/app/logs", {},
JSON.stringify({
'logData': 'Some Data'
}));
【问题讨论】:
-
您是否尝试从 PCF 中为您的应用提取事件日志?
-
我认为您应该看看 Pivotal Cloud Foundry 的 loggregator architecture。
-
PCF websockets 仅通过 loggergator 框架公开。您必须构建一个名为
nozzle的应用程序并进行部署。看看我上面贴的社区firehose-to-syslog喷头链接。 -
@K.AJ - 这是不正确的。您正在谈论针对 Loggregator 使用 WebSockets,这当然是您可以做的事情,但这绝不是您可以在 Cloud Foundry 上使用 WebSockets 做的唯一事情。 任何在 CF 上运行的应用程序都可以使用 WebSockets,并且应用程序可以将它用于应用程序认为合适的任何目的。该应用程序确实不需要需要创建喷嘴或其他任何东西。任何标准的 WebSocket 客户端,比如浏览器中的客户端,都应该可以正常工作。
标签: stomp spring-websocket cloud-foundry sockjs