Я работаю над отправкой сообщений со стороны сервера в угловое клиентское приложение, используя Spring web socket + stomp + SockJsClient на стороне сервера и SockJS на угловой стороне.
Мой сервер 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 через сервер веб-сокетов, который работает на отдельном сервере весенней загрузки.И обновление протокола на стороне сервера и клиента вроде. ws to wss и http to 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?
Пожалуйста, помогите мнеубирайся из этого.
Спасибо:)