Spring websocket (WSS) с угловыми sockjs (HTTPS) поверх защищенного сервера веб-сокетов (tomcat) - PullRequest
3 голосов
/ 19 июня 2019

Я работаю над отправкой сообщений со стороны сервера в угловое клиентское приложение, используя 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?

Пожалуйста, помогите мнеубирайся из этого.

Спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...