Я работаю над отправкой сообщений со стороны сервера в клиентское приложение angular, используя веб-сокет Spring + stomp + SockJsClient на стороне сервера и SockJS на стороне angular.
Мой сервер Socket - это приложение с весенней загрузкой, работающее на порту 8080.
Он отлично работает по протоколу ws/http. но теперь я включил SSL на сервере сокетов.
Конфигурация сокет-сервера.
@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();
}}
Рабочий код клиента Java через WS
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) => {}
Теперь я реализовал SSL через свой сервер веб-сокетов, который работает на отдельном загрузочном сервере spring. И обновить протокол на стороне сервера и клиента, как. 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));
У меня есть ссылка на следующую ссылку стека, но не повезло :(
Защищенный веб-сокет с HTTPS (SSL)
Как использовать Spring WebSocketClient с SSL?
Пожалуйста, помогите мне выбраться из него.
Спасибо :)