При подключении к WebSocket из моего интерфейса (с использованием Stomp для Dart):
client = await connect(uri);
Клиент отправляет этот ключ в заголовке:
Sec-WebSocket-Key: ydWCNEacB1ZqiHCH1Ip+vo4mhOw=
И получает ключ от Spring WebSocket:
Sec-WebSocket-Accept: KVqExHty0Y5/fze11/EAhg==
Это заставляет клиента бросать:
WebSocket connection to 'ws://user:pass@localhost:8080/ws' failed: Error during WebSocket handshake: Incorrect 'Sec-WebSocket-Accept' header value
Я не знаю, как рассчитать правильный ответ. Но в любом случае клиент по какой-то причине его не принимает.
Как мне подойти к этой проблеме? Что могло быть причиной проблемы и как ее решить?
Спасибо
Обновлено: добавлена конфигурация веб-сокета:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/app").enableSimpleBroker("/topic");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").setAllowedOrigins("*");
registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
}
}
Также
@Configuration
public class WebSocketSecurityConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer {
@Override
protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) {
messages.anyMessage().authenticated();
}
}
Обновлено: я нашел вики, в которой описывается, как вычислить Sec-WebSocket-Key. Следуя приведенному ниже руководству, похоже, что ключ неверный. Хотя это маловероятно, или проблемы могут возникнуть у многих других. https://en.wikipedia.org/wiki/WebSocket
Это небольшая проблема. Это большой проект, и я понятия не имею, в чем проблема. Что касается внешнего интерфейса, то единственной важной частью должна быть часть connect (...), указанная выше.
покажите нам конфигурацию вашего сервера webSocket
Отредактировано сообщение для добавления config.
Сначала покажите свой код, а потом мы вместе разберемся, в чем проблема.