Не могу подключиться к моему WebSocket, когда он работает удаленноJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Не могу подключиться к моему WebSocket, когда он работает удаленно

Сообщение Anonymous »

Я создал несколько конечных точек WebSocket в своей программе Spring Boot. В моем проекте также есть авторизация и аутентификация.
Когда я запускаю программу на своем локальном компьютере, я могу легко подключиться к URL-адресу WebSocket, но когда я запускаю программу на своем экземпляре EC2, она возвращает мне " Ошибка 503 «Служба недоступна». Конечные точки REST работают нормально при удаленной работе (например, вход в систему или некоторые запросы GET).
Не могли бы вы объяснить мне, что я делаю не так? Почему только конечные точки веб-сокета не работают, когда программа работает удаленно? Обратите внимание, что я могу успешно отправлять HTTP-запросы. Не работают только конечные точки ws://.
Это приблизительный URL-адрес, который я использую для подключения к веб-сокету:

Код: Выделить всё

ws://:8080/bitget/openInterest?token=eyJhbGciOiJIUzUxMiJ9
Это детали рукопожатия, когда я пытаюсь подключиться к своему веб-сокету, размещенному на удаленном компьютере:

Код: Выделить всё

Error: Unexpected server response: 503
Handshake Details
Request Method: GET
Status Code: 503 Service Unavailable
Request Headers
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: IsmT7rtHeLOKadliKnIq/Q==
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Host: :8080
Response Headers
Content-Type: text/html; charset=UTF-8
Content-Length: 6832
Connection: close
P3P: CP="CAO PSA OUR"
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
У меня есть следующая конфигурация веб-сокета:

Код: Выделить всё

@Configuration
@EnableWebSocket
@RequiredArgsConstructor
public class WebSocketConfig implements WebSocketConfigurer {

private final WSOrderBookHandler orderBookHandler;
private final WSOpenInterestHandler openInterestHandler;

@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(orderBookHandler, "/binance/depth").setAllowedOrigins("*")
.addHandler(openInterestHandler, "/bitget/openInterest").setAllowedOrigins("*");
}
}
Это один из моих обработчиков:

Код: Выделить всё

@Component
@Slf4j
@RequiredArgsConstructor
public class WSOpenInterestHandler extends TextWebSocketHandler {

private final Set sessions = ConcurrentHashMap.newKeySet();

@Override
public synchronized void afterConnectionEstablished(@NonNull WebSocketSession session) {
log.info("Open Interest client connected: {}", session.getId());
sessions.add(session);
}

@Override
public void afterConnectionClosed(@NonNull WebSocketSession session, @NonNull CloseStatus status) {
log.info("Websocket connection closed: {}", session.getId());
sessions.remove(session);
}

public void broadCastData(String data) {
sessions.forEach(session -> {
try {
session.sendMessage(new TextMessage(data));
} catch (IOException e) {
log.error("Couldn't send message: {}", e.getMessage());
}
});
}
}
А это конфигурация моей группы безопасности, если необходимо

Подробнее здесь: https://stackoverflow.com/questions/793 ... -on-remote
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»