Server-Java-Spring Websockets

F

ff_java

Mitglied
Hallo Zusammen,
ich versuche eine kleine Chat Applikation zu entwickeln, und bin dabei folgendem Tutorial gefolgt. (https://www.callicoder.com/spring-boot-websocket-chat-example/)
Nun ist allerdings die Anforderung die Clientseite aus dem Projekt auszugliedern, bevor der Service deployt wird. Also das ich die Index.html, main.css und die main.js getrennt lagere. Nun weiß ich allerdings nicht was ich tun muss, um den Client wieder mit dem Server zu verbinden.
Muss hier ein Pfad angepasst werden, z.B. beim new SockJS(...) oder wie stelle ich diese Verbindung her.
Kann mir hier vielleicht jemand weiterhelfen?
Vielen Dank
Beste Grüße
Florian
 
kneitzel

kneitzel

Top Contributor
Also wenn ich Dich richtig verstanden habe, dann willst Du die statischen Dinge nicht mehr per spring boot ausliefern sondern über einen anderen Server (z.B. ein apache Webserver oder lokale Dateien).

Nach meinem Verständnis sollte es da dann ausreichen, die entsprechende URL anzugeben, so wie es z.B. bei https://github.com/sockjs/sockjs-client angegeben wurde.

Also statt dem bisher hart kodierten /ws muss es dann halt ein http://localhost:8080/ws oder so sein. In der Applikation macht da der Browser einiges selbst, aber wenn Auslieferung der Seite und der Web Socket getrennt sind, dann musst Du die korrekte URL halt selbst angeben.
 
F

ff_java

Mitglied
Danke für das Feedback. Das hab ich auch schon probiert, leider wird so aber die onError-Funktion ausgelöst.
 
kneitzel

kneitzel

Top Contributor
Kannst Du Details nennen?
a) Was ist Deine genaue Konfiguration? Also zum einen genau die Seite - was hast Du genau geändert? Welche URL hast du genau angegeben und so.
b) Wie ist dein genaues Vorgehen? (Also ich hoffe mal, dass Du die Spring Boot Applikation auch gestartet hast und so ...)
c) Was ist der genaue Fehler? onError bekommt doch auch einen Fehler ausgegeben. Und siehst Du etwas bei der Console der Spring Boot Applikation?

Es kann sich auch lohnen, einfach im Browser die Entwickler Konsole zu öffnen. Da bekommt man Fehler auch meist gut angezeigt und kann Requests sowie die Antworten nachvollziehen und so ...

Also ich würde jetzt raten, dass es ein Security Thema ist, da Du nun einen anderen Server ansprichst, als die Seite geladen wurde. Das wird spring boot per default nicht mögen. Das wirst Du aber bestimmt im Detail sagen können. Das was ich meine, würde ich z.B. unter https://developer.mozilla.org/de/docs/Web/HTTP/CORS nachlesen lassen (So es diese Problematik ist.)
 
kneitzel

kneitzel

Top Contributor
Ok, ich habe jetzt einmal die Zeit gefunden, das selbst einmal auszuprobieren.

Meine Vermutung stimmte, es ist das vermutete Problem. Dieses konkrete Problem lässt sich lösen durch eine kleine Anpassung der WebSocketConfig, in der eine Methode leicht angepasst werden muss:

Code:
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
    }

Das setAllowedOrigins ist hinzu gekommen.

Evtl. hilft es Dir, wenn ich kurz mein Vorgehen umschreibe:
- Den Beispielcode von https://github.com/callicoder/spring-boot-websocket-chat-demo herunter geladen, entpackt und gestartet
- Die Verzeichnisstruktur aus dem static Verzeichnis in ein temp Verzeichnis kopiert.
- In der HTML Seite die Links zum css und zur js jeweils am Anfang mit einem . versehen (also Start mit "./" statt nur mit "/")
- Aufruf der HTML Seite aus dem temp Verzeichnis heraus mit Chrome, Developer .
==> "Access to XMLHttpRequest at 'http://localhost:8080/ws/info?t=1589867374734' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource." (Danach wird sich bestimmt gut in Google suchen lassen.

Das mit dem setAllowedOrigins ist dann eine einfache Lösungsmöglichkeit. Das dürfte wohl auch in den meisten Anleitungen / Tutorials so auftauchen meine ich (Sowas meine ich zumindest am öftesten gelesen zu haben, aber ich möchte mich da nicht unbedingt festlegen. Da kennen sich andere evtl. noch deutlich besser aus und halten ggf. andere Lösungen für besser..).
 
F

ff_java

Mitglied
Hallo,
vielen Dank für die Antwort. Mit dieser Änderung funktioniert das.
Ich habe auch mal deine Schritte ausgeführt und verstehe es jetzt schon besser.
Vielleicht kannst du mir auch spontan bei meinem zweiten Problem in diesem Kontext helfen. Ich werde auch wie von dir beschrieben ganz explizit auf die Problematik eingehen und Details nennen.
Ich möchte den Client in einem Typescript Projekt nutzen und das Ganze mit Webpack bündeln. Aktuell wird ja im Javascript-Code SockJS und Stomp für die Erstellung eines Clients genutzt:
Code:
     var socket = new SockJS('/ws');
     stompClient = Stomp.over(socket);
     stompClient.connect({}, onConnected, onError);
Wenn ich nun das Ganze mit Typescript und Webpack nutzen möchte, muss ich ja entsprechende imports für SockJS und Stomp bereitstellen.
Bei meiner Recherche schien es mir am besten auf sockjs-client (https://github.com/sockjs/sockjs-client) und stompjs (https://github.com/stomp-js/stompjs) zurückzugreifen. Genutzt werden könnte dies ja über
Code:
import * as SockJS from 'sockjs-client';
import * as Stomp from 'stompjs';
Vorher habe ich entsprechend die Installation vorgenommen und die Typings installiert
Code:
npm i sockjs-client --save
npm i stompjs --save

Wenn ich allerdings new SockJS('http://localhost:8080/ws') erstellen möchte, kommt folgende Fehlermeldung:
This expression is not constructable.
Type '{ default: { (url: string, _reserved?: any, options?: Options | undefined): WebSocket; new (url: string, _reserved?: any, options?: Options | undefined): WebSocket; ... 4 more ...; CLOSED: 3; }; ... 4 more ...; CLOSED: 3; }' has no construct signatures.ts(2351)
communication.component.ts(9, 1): Type originates at this import. A namespace-style import cannot be called or constructed, and will cause a failure at runtime. Consider using a default import or import require here instead.

Auch finde ich keine Verbindung dieser beiden Bibliotheken, um die bisherige Logik entsprechend umzusetzen.

Falls du mir auch hierbei eine Lösung nennen kannst, wäre ich sehr dankbar.
Beste Grüße
 
kneitzel

kneitzel

Top Contributor
Also mit Typescript kann ich nicht wirklich helfen. Ich bin in erster Linie auf dem Backend zuhause....

Aber wenn ich mir die Doku etwas ansehe (StompJS habe ich z.B. https://stomp-js.github.io/guide/stompjs/using-stompjs-v5.html gefunden), dann sieht es etwas anders aus.

Da findet man für TypeScript ein Import, der etwas anders aussieht. Und auch der Code sieht da komplett anders aus ... aber das kann ich nicht weiter bewerten, da Ich in TypeScript bisher nichts groß gemacht habe ....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
LesterBurnham Spring, Config Server, mehrere Gitlab Repos für Konfiguration - best practices Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot auf virtuellen Server oder Cloud? Frameworks - Spring, Play, Blade, Vaadin & Co 4
D AWS Server Spring Boot und Datenbank Frameworks - Spring, Play, Blade, Vaadin & Co 0
B Spring Boot/Html-Content/Web-Server Frameworks - Spring, Play, Blade, Vaadin & Co 2
A Spring Server Logging Frameworks - Spring, Play, Blade, Vaadin & Co 5
NicoDeluxe Webfrontend mit Java Backend Frameworks - Spring, Play, Blade, Vaadin & Co 24
L Controller Spring Boot mit Java Frameworks - Spring, Play, Blade, Vaadin & Co 20
J Spring Boot Thymleaf mit Java.Optional Frameworks - Spring, Play, Blade, Vaadin & Co 0
B Java Spring Boot - POM-Problem Frameworks - Spring, Play, Blade, Vaadin & Co 8
H OAuth2 mit Spring boot und Java Frameworks - Spring, Play, Blade, Vaadin & Co 5
P Java EE vs. Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
K Spring Security für Java SE Frameworks - Spring, Play, Blade, Vaadin & Co 2
V Java (Eclipse) programmierung zum Springerproblem Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Java for-Schleife überspringt eine Eingabe Frameworks - Spring, Play, Blade, Vaadin & Co 11
Java.getSkill() Gemeinsam Java Spring lernen Frameworks - Spring, Play, Blade, Vaadin & Co 17
S Senior-Softwareentwickler (m/w) Java / Spring im Raum Frankfurt Frameworks - Spring, Play, Blade, Vaadin & Co 0
MQue Meine Java Spring Appl Frameworks - Spring, Play, Blade, Vaadin & Co 0
W Java Applet aus der Taskleiste springt in Vordergrund Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Java Applet:Thread.Timeout überspringt Teile des Codes Frameworks - Spring, Play, Blade, Vaadin & Co 2
S Integrations Test in Java mit Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
A Java Bean Validation und Spring Webflow Frameworks - Spring, Play, Blade, Vaadin & Co 0
Y java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener Frameworks - Spring, Play, Blade, Vaadin & Co 14
W java Spring mit db Frameworks - Spring, Play, Blade, Vaadin & Co 1
nrg Debugger springt immer in Java SE Code Frameworks - Spring, Play, Blade, Vaadin & Co 3
B Spring / Jpa / Hibernate -> java.lang.IllegalArgumentException: Unknown entity Frameworks - Spring, Play, Blade, Vaadin & Co 1
H java web anwendung auf spring 2.0 umstellen Frameworks - Spring, Play, Blade, Vaadin & Co 3
NicoDeluxe Spring Boot Mapping null bei GET Aufruf Frameworks - Spring, Play, Blade, Vaadin & Co 8
NicoDeluxe Buchempfehlung Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 17
NicoDeluxe Spring Boot Test mit Junit Frameworks - Spring, Play, Blade, Vaadin & Co 8
L Spring Thymeleaf Datatables Daten editieren? Frameworks - Spring, Play, Blade, Vaadin & Co 0
J Spring Boot - Reactor Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Spring Boot, H2 und Restschnittstelle synchonisation mit Client Frameworks - Spring, Play, Blade, Vaadin & Co 10
TonioTec Spring Boot Datenbankabfrage Frameworks - Spring, Play, Blade, Vaadin & Co 7
L Spring Data: Wie kann ich das Datenmodell richtig definieren? Frameworks - Spring, Play, Blade, Vaadin & Co 6
NicoDeluxe Spring Boot encoding Slash in URL Parameter Frameworks - Spring, Play, Blade, Vaadin & Co 7
S Spring Boot startet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring: Testen von unterschiedlichen application.properties Werten Frameworks - Spring, Play, Blade, Vaadin & Co 6
S Spring Boot -> War File | 404 in Tomcat Frameworks - Spring, Play, Blade, Vaadin & Co 20
A Eventhandling mit Spring REST API Frameworks - Spring, Play, Blade, Vaadin & Co 13
L Spring Boot Anwendung "automatisch" neustarten Frameworks - Spring, Play, Blade, Vaadin & Co 3
A Spring boot Frameworks - Spring, Play, Blade, Vaadin & Co 18
bueseb84 Unit Test mit Spring Boot - Service Autowired Frameworks - Spring, Play, Blade, Vaadin & Co 0
iman Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 13
S Spring Security deaktivieren Frameworks - Spring, Play, Blade, Vaadin & Co 10
NicoDeluxe DTO <> Entity Hibernate Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 28
W Projekt Bootstrap/Kotlin/Spring Framework Frameworks - Spring, Play, Blade, Vaadin & Co 0
W Kotlin / Spring Framework Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring MongoDB: Attribut in der Superklasse und @Indexed erst in der Subklasse Frameworks - Spring, Play, Blade, Vaadin & Co 5
NicoDeluxe Verständnisfrage DTO Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 19
NicoDeluxe Spring Boot Load Balancing Frameworks - Spring, Play, Blade, Vaadin & Co 5
S Spring: MongoDB Assoziation Frameworks - Spring, Play, Blade, Vaadin & Co 1
S Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 1
NicoDeluxe Spring Boot Threads Frameworks - Spring, Play, Blade, Vaadin & Co 6
S Spring Boot: Wert aus Config Datei ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Boot: Ein geschütztes Verzeichnis Frameworks - Spring, Play, Blade, Vaadin & Co 1
bueseb84 Probleme mit Spring Boot Docker und Bootstrap Frameworks - Spring, Play, Blade, Vaadin & Co 9
NicoDeluxe Spring Boot Eureka/Zuul Frameworks - Spring, Play, Blade, Vaadin & Co 0
F Redirect in einer Spring Boot WebApplication Frameworks - Spring, Play, Blade, Vaadin & Co 7
F spring apllication startet nicht, ports werden verwednet Frameworks - Spring, Play, Blade, Vaadin & Co 12
B Erstes Spring Boot Projekt: Gameserver-Manager Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring Kurse von Baeldung Frameworks - Spring, Play, Blade, Vaadin & Co 6
Thallius Gibt es einen "Standard" Folder für Spring deployment auf Linux Servern? Frameworks - Spring, Play, Blade, Vaadin & Co 13
L Spring Data Einträge von User zahlen und auflisten Frameworks - Spring, Play, Blade, Vaadin & Co 7
V Spring Boot, thymeleaf, Eingaben cashen oder per session speichern? Frameworks - Spring, Play, Blade, Vaadin & Co 2
S Spring Boot Security Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Boot i18n Frameworks - Spring, Play, Blade, Vaadin & Co 28
bueseb84 Spring Boot : Update H2 Repository Frameworks - Spring, Play, Blade, Vaadin & Co 14
A Spring Boot/ OneToMany Relation Frameworks - Spring, Play, Blade, Vaadin & Co 29
S Spring: Eine Klasse am Anfang instanzieren Frameworks - Spring, Play, Blade, Vaadin & Co 5
S Spring Boot testen mit Service Klassen Frameworks - Spring, Play, Blade, Vaadin & Co 4
iman Controller in Spring 4,0 Frameworks - Spring, Play, Blade, Vaadin & Co 2
S Spring JPA / Hibernate: save Methode arbeitet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 2
Thallius Spring Backend Funktion mit Langzeit Requester Frameworks - Spring, Play, Blade, Vaadin & Co 2
F spring post null werte Frameworks - Spring, Play, Blade, Vaadin & Co 1
F Spring Webanwendung Datenbank Frameworks - Spring, Play, Blade, Vaadin & Co 47
J Spring Boot H2 Datbase Frameworks - Spring, Play, Blade, Vaadin & Co 2
A Spring Namenconvention Frameworks - Spring, Play, Blade, Vaadin & Co 4
L JavaFX Anwendung mit Spring Boot und mehrere FXML Forms Frameworks - Spring, Play, Blade, Vaadin & Co 5
P Mit Maven (und Spring-boot) ein FatJAR und ein EAR bauen Frameworks - Spring, Play, Blade, Vaadin & Co 3
NicoDeluxe Spring Boot Basic Authentication langsam Frameworks - Spring, Play, Blade, Vaadin & Co 2
NicoDeluxe Start Stop Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
H spring web Frameworks - Spring, Play, Blade, Vaadin & Co 26
H Spring Boot - Dependency Injection Frameworks - Spring, Play, Blade, Vaadin & Co 26
S Spring: Werte speichern über Requests hinwege ohne DB Frameworks - Spring, Play, Blade, Vaadin & Co 24
NicoDeluxe Spring Boot parallele Requests Frameworks - Spring, Play, Blade, Vaadin & Co 1
NicoDeluxe Spring Boot Resttemplate exchange XML Frameworks - Spring, Play, Blade, Vaadin & Co 6
S Spring Data Repository delete bulk Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Root-Pfad zu meiner Spring Boot Application Frameworks - Spring, Play, Blade, Vaadin & Co 3
N MongoDB-Spring "Cannot use a complex object as a key value" Frameworks - Spring, Play, Blade, Vaadin & Co 0
NicoDeluxe Spring Boot Error Logging Frameworks - Spring, Play, Blade, Vaadin & Co 5
NicoDeluxe Spring Boot Transactions Frameworks - Spring, Play, Blade, Vaadin & Co 10
R Spring Data: Hibernate liest nicht alle Ebenen Frameworks - Spring, Play, Blade, Vaadin & Co 5
L Spring Data: Detached Entity passed to persist Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Nebenjob im Bereich JEE, Spring, Servlets, REST Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Boot: Eigene Config aufbauen Frameworks - Spring, Play, Blade, Vaadin & Co 6
S Spring MVC redirect Nachricht ohne erweiterung der URL Frameworks - Spring, Play, Blade, Vaadin & Co 5
S Spring Boot - MVC - Error flushen Frameworks - Spring, Play, Blade, Vaadin & Co 0
K Spring Boot und RestFull Frameworks - Spring, Play, Blade, Vaadin & Co 3
L Spring Data: Multiple representations of the same entity Frameworks - Spring, Play, Blade, Vaadin & Co 14
A Spring ServerQueue Frameworks - Spring, Play, Blade, Vaadin & Co 0

Ähnliche Java Themen

Anzeige

Neue Themen


Oben