Ich kann keine Verbindung zu meinem WebSocket herstellen, wenn er remote ausgeführt wirdJava

Java-Forum
Guest
 Ich kann keine Verbindung zu meinem WebSocket herstellen, wenn er remote ausgeführt wird

Post by Guest »

Ich habe in meinem Spring Boot-Programm einige WebSocket-Endpunkte erstellt. Ich habe auch Autorisierung und Authentifizierung in meinem Projekt.
Wenn ich das Programm auf meinem lokalen Computer ausführe, kann ich problemlos eine Verbindung zu einer WebSocket-URL herstellen, aber wenn ich das Programm auf meiner EC2-Instanz ausführe, erhalte ich " Fehler „503 Dienst nicht verfügbar“. REST-Endpunkte funktionieren einwandfrei, wenn sie remote ausgeführt werden (wie die Anmeldung oder einige GET-Anfragen).
Könnten Sie mir bitte erklären, was ich falsch mache? Warum funktionieren nur die WebSocket-Endpunkte nicht, wenn das Programm auf Remote läuft? Beachten Sie, dass ich HTTP-Anfragen erfolgreich senden kann. Nur die ws://-Endpunkte funktionieren nicht.
Dies ist die ungefähre URL, die ich verwende, um eine Verbindung zu einem Websocket herzustellen:

Code: Select all

ws://:8080/bitget/openInterest?token=eyJhbGciOiJIUzUxMiJ9
Dies sind die Handshake-Details, wenn ich versuche, eine Verbindung zu meinem auf einem Remote-Computer gehosteten Websocket herzustellen:

Code: Select all

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
Ich habe die folgende Websocket-Konfiguration:

Code: Select all

@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("*");
}
}
Dies ist einer meiner Handler:

Code: Select all

@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());
}
});
}
}
Und das ist meine Sicherheitsgruppenkonfiguration, falls nötig

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post