通过安全Web套接字服务器(tomcat)上的带有角度sockjs(HTTPS)的Spring websocket(WSS)

问题描述 投票:7回答:1

我正在使用服务器端的Spring Web socket + stomp + SockJsClient和角度端的SockJS将消息从服​​务器端发送到角度客户端应用程序。

我的套接字服务器是一个春季启动应用程序,并且在8080端口上运行。

它可以通过ws / http协议正常工作。但现在我已在套接字服务器上启用了SSL。

Socket服务器配置。

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

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

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

WS上的Java客户端的工作代码

List<Transport> transports = new ArrayList<Transport>(1);
transports.add(new RestTemplateXhrTransport());
SockJsClient sockJsClient = new SockJsClient(transports);
sockJsClient.setMessageCodec(new Jackson2SockJsMessageCodec());

WebSocketStompClient stompClient = new WebSocketStompClient(sockJsClient);
stompClient.setMessageConverter(new StringMessageConverter());
String url = "ws://my-socket.server.com/sync";
StompSessionHandler sessionHandler = new MyStompSessionHandler(senderId, syncUrl, content);
stompClient.connect(url, sessionHandler);

通过HTTP的角度客户端的工作代码

const Stomp = StompJs.Stomp;
const socket = new SockJS('http://my-socket.server.com/sync');
this.stompClient = Stomp.over(socket);
this.stompClient.connect({}, (res, err) => {}

现在,我已经在运行在单独的spring boot服务器上的Web套接字服务器上实现了SSL。并在服务器和客户端更新协议。 ws到wss,http到https。

并且还尝试以下操作来添加SSL上下文

StandardWebSocketClient simpleWebSocketClient = new StandardWebSocketClient();
List<Transport> transports = new ArrayList<Transport>(1);
Map<String, Object> userProperties = new HashMap<String, Object>();
userProperties.put("org.apache.tomcat.websocket.SSL_CONTEXT", SSLContext.getDefault());
simpleWebSocketClient.setUserProperties(userProperties);
transports.add(new WebSocketTransport(simpleWebSocketClient));

我从以下堆栈链接获取了参考,但没有运气:(

Secure websocket with HTTPS (SSL)

How to use Spring WebSocketClient with SSL?

[请帮助我摆脱困境。

谢谢:)

spring-boot ssl spring-websocket stomp sockjs
1个回答
0
投票

我也有这个问题,您解决了吗?


推荐问答