Inhaltsverzeichnis
Was sind Websockets und warum nutzen sie?
Einrichten von Websockets im Spring Start
1. Fügen Sie Abhängigkeiten hinzu
2. Aktivieren Sie WebSocket
Aufbau eines Echtzeit-Chat-Beispiels
1. Definieren Sie ein Nachrichtenmodell
2. Erstellen Sie einen Nachrichtencontroller
3. Frontend mit JavaScript und Sockjs
Umgang mit Benutzern und privaten Nachrichten
Produktionsüberlegungen
Alternativen und Verbesserungen
Heim Java javaLernprogramm Entwicklung von Echtzeit-Anwendungen mit Java und Websockets

Entwicklung von Echtzeit-Anwendungen mit Java und Websockets

Aug 16, 2025 am 11:10 AM

Java mit WebSockets ist ideal für Echtzeit-Anwendungen wie Chat-Apps und Live-Dashboards aufgrund seiner Kommunikation mit geringem Duplex und niedriger Latenz. 1. Verwenden Sie die Spring-Websocket und das Spring-Messaging von Spring Boot, um WebSockets einzurichten. 2. Konfigurieren Sie Stomp -Endpunkte und Nachrichtenbroker über @enableWebsocketMessageBroker; 3. Erstellen Sie ein Chat -Beispiel mit @MessAgemapping und @SendTO, um Nachrichten zu senden. 4. Implementieren Sie private Nachrichten mit SimpMessagingTemplate und benutzerspezifischen Zielen; 5. Stellen Sie die Produktionsbereitschaft sicher, indem Sie Verbindungen verwalten, mit Nachrichtenmakler wie Redis oder Rabbitmq skalieren, Endpunkte mit Frühlingssicherheit sichern und Sockjs -Fallbacks verwenden; 6. Betrachten Sie Alternativen wie Netty oder Reactive WebFlux für hochwertige Szenarien, verlassen Sie sich jedoch auf den Spring Boot für die meisten Anwendungsfälle, um sichere, skalierbare Echtzeitfunktionen mit sauberen Nachrichtenverträgen sicherzustellen.

Entwicklung von Echtzeitanwendungen mit Java und Websockets

Echtzeit-Anwendungen-wie Chat-Apps, Live-Dashboards und kollaborative Tools-erfordern den Sofortdatenaustausch zwischen Clients und Servern. Java ist mit seinem robusten Ökosystem und seiner Unterstützung für Websockets eine solide Wahl für den Aufbau solcher Anwendungen. Hier erfahren Sie, wie Sie Echtzeitfunktionen mithilfe von Java und Websockets effektiv entwickeln können.

Entwicklung von Echtzeitanwendungen mit Java und Websockets

Was sind Websockets und warum nutzen sie?

HTTP basiert an Request-Response, dh der Client muss den Server nach Aktualisierungen fragen. Dies funktioniert nicht gut für Echtzeitbedürfnisse. WebSockets bieten eine full-duplex-anhaltende Verbindung zwischen Client und Server, sodass beide Seiten jederzeit Daten senden können.

Im Vergleich zu Polling- oder Server-Sent-Ereignissen (SSE) bieten WebSockets an:

Entwicklung von Echtzeitanwendungen mit Java und Websockets
  • Geringere Latenz
  • Reduzierter Overhead (keine wiederholten HTTP -Header)
  • Bidirektionale Kommunikation

Java EE (jetzt Jakarta EE) und Spring Boot bieten eine starke Unterstützung von Websocket und erleichtern die Integration in Unternehmensanwendungen.


Einrichten von Websockets im Spring Start

Spring Boot vereinfacht die Entwicklung von Websocket mit spring-websocket und spring-messaging . Hier ist ein minimales Setup:

Entwicklung von Echtzeitanwendungen mit Java und Websockets

1. Fügen Sie Abhängigkeiten hinzu

 <De vorangehen>
    <gruppeID> org.springframework.boot </Groupid>
    <artifactid> Spring-Boot-Starter-Websocket </artifactid>
</abhängig>

2. Aktivieren Sie WebSocket

Erstellen Sie eine Konfigurationsklasse:

 @Konfiguration
@EnableWebSocketMessageBroker
Public Class WebSocketConfig implementiert WebSocketMessageBrokerConFigur {

    @Override
    public void register
        Registry.Addendpoint ("/ws"). WithSockjs (); // stampfe über Websocket
    }

    @Override
    public void configuremessageBroker (MessageBrokerregistry Registry) {
        Registry.EnablesImpleBroker ("/topy"); // zum Rundfunk
        Registry.SetApplicationDestinationPrefixes ("/App"); // für App-spezifische Nachrichten
    }
}

Diese Konfiguration:

  • Entellt einen WebSocket -Endpunkt bei /ws auf
  • Verwendet Sockjs als Fallback für ältere Browser
  • Richtet einen einfachen Message -Broker für Themen ein

Aufbau eines Echtzeit-Chat-Beispiels

Lassen Sie uns eine einfache Chat-App erstellen, um Echtzeit-Nachrichten zu demonstrieren.

1. Definieren Sie ein Nachrichtenmodell

 öffentliche Klasse ChatMessage {
    private String -Inhalte;
    privater String -Absender;
    // Konstruktoren, Getters, Setters
}

2. Erstellen Sie einen Nachrichtencontroller

 @Regler
öffentliche Klasse ChatController {

    @MessAgemapping ("/chat.send")
    @Sendto ("/topy/public")
    public chatMessage send (chatMessage meldung) {
        Meldung zurückgeben;
    }
}
  • @MessageMapping Griffe eingehende Stomp -Nachrichten von Clients
  • @SendTo sendet die Antwort an alle Abonnenten /topic/public

3. Frontend mit JavaScript und Sockjs

 <script src = "https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js"> </script>
<script src = "https://cdn.jsdelivr.net/npm/stompjs@3.3.3/lib/stomp.min.js"> </script>

<Script>
    const socket = new Sockjs (&#39;/ws&#39;);
    const stompclient = stomp.over (Socket);

    stompclient.connect ({}, function () {
        stompclient.subscribe (&#39;/topic/public&#39;, function (message) {
            const chatMessage = json.parse (message.body);
            console.log (chatMessage.sender ":" chatMessage.content);
        });
    });

    // eine Nachricht senden
    Funktion sendMessage () {
        stompclient.send ("/app/chat.send", {}, json.stringify ({{{{{{{
            &#39;Absender&#39;: &#39;Alice&#39;,
            &#39;Inhalt&#39;: &#39;Hallo!&#39;
        }));
    }
</script>

Dies stellt eine Verbindung zum WebSocket her, zeichnet sich für Chat -Updates ab und sendet Nachrichten an den Server zurück.


Umgang mit Benutzern und privaten Nachrichten

Für private Nachrichten oder benutzerspezifische Updates können Sie:

  • Verwenden Sie benutzerbasierte Ziele wie /user/queue/private
  • Authentifizierende WebSocket -Sitzungen über die Frühlingssicherheit
  • Verwenden Sie SimpMessagingTemplate , um Nachrichten an bestimmte Benutzer zu senden

Beispiel:

 @Autowired
private SimpMessagingTemplate MessagingTemplate;

public void sendPrivateMessage (String userID, ChatMessage -Nachricht) {
    MessagingTemplate.ConvertandSendTouser (userId, "/queue/privat", meldung);
}

Clients abonnieren /user/queue/private um persönliche Nachrichten zu erhalten.


Produktionsüberlegungen

Während Websockets gut funktionieren, erfordert die Skalierung von Echtzeit-Apps aufmerksam:

  • Verbindungsmanagement : Verfolgen Sie aktive Sitzungen und säubern Sie die Trennung
  • Skalierbarkeit : Verwenden Sie Nachrichtenmakler wie Rabbitmq oder Redis zum Clustering
  • Sicherheit : Validieren Sie Nachrichten, authentifizieren Benutzer und verhindern Spam
  • Fallbacks : Sockjs hilft, aber testen Sie den älteren Browserunterstützung
  • Überwachung : Protokollverbindungsereignisse und Nachrichtendurchsatz protokollieren

Erwägen Sie auch, reaktive Stapel (wie Spring WebFlux) für eine bessere Skalierbarkeit unter hoher Parallelität zu verwenden.


Alternativen und Verbesserungen

Betrachten Sie für Hochleistungs- oder großflächige Systeme:

  • Netty : Ein Framework auf niedriger Ebene für benutzerdefinierte WebSocket-Server
  • Quarkus oder Micronaut : Leichte Java -Frameworks mit WebSocket -Unterstützung
  • Redis Pub/Sub : Für die Entkopplung der Nachrichtenverteilung über die Dienste hinweg

Für die meisten Echtzeit-Web-Apps ist Spring Boot WebSockets jedoch mehr als ausreichend.


Die Entwicklung von Echtzeit-Apps in Java mit WebSockets ist nicht kompliziert, wenn Sie den Fluss verstanden haben. Mit den Abstraktionen von Spring können Sie in Stunden von der Idee zum Arbeitsprototyp wechseln. Der Schlüssel besteht darin, saubere Nachrichtenverträge zu entwerfen und frühzeitig zu planen.

Halten Sie sich im Frühjahr im Frühling an Websockets, verwenden Sie die richtigen Themen und Benutzerdestinationen und sichern Sie Ihre Endpunkte immer. Das bringt Sie dort zu 90%.

Das obige ist der detaillierte Inhalt vonEntwicklung von Echtzeit-Anwendungen mit Java und Websockets. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist ein Deadlock in Java und wie können Sie ihn verhindern? Was ist ein Deadlock in Java und wie können Sie ihn verhindern? Aug 23, 2025 pm 12:55 PM

AdeadlockinjavaoccurswhentwoOmorethreadsareblockedforever, jeder waitingForAresourceheldyTheOther, typischerweiseDuetoccircularWait -byConsistentLockorder;

Wie implementieren Sie einen einfachen TCP -Client in Java? Wie implementieren Sie einen einfachen TCP -Client in Java? Aug 08, 2025 pm 03:56 PM

Importjava.ioandjava.net.socketfori/oandsocketcommunication.2.CreateSocketObjectToConnectTotheserverusednameAnDport.3.useprintSertosendDataviaoutputStreamandBufferedReadereadServerresponSfrend

Richtige Haltung für den Umgang mit Nicht-UTF-8-Anforderungscodierung in der Spring-Boot-Anwendung Richtige Haltung für den Umgang mit Nicht-UTF-8-Anforderungscodierung in der Spring-Boot-Anwendung Aug 15, 2025 pm 12:30 PM

In diesem Artikel wird der Mechanismus und häufige Missverständnisse von Spring-Boot-Anwendungen für die Behandlung von Nicht-UTF-8-Anforderungen erörtert. Der Kern liegt in der Verständnis der Bedeutung des Parameters des Charset im HTTP-Inhaltsheader sowie des Standardzeichensatzes Verarbeitungsfluss des Federschuhs. Durch die Analyse des durch falschen Testmethoden verursachten Verstürmungscodes führt der Artikel die Leser, wie sie Anforderungen für verschiedene Codierungen korrekt simulieren und testen können, und erklärt, dass der Spring -Boot normalerweise keine komplexen Konfigurationen erfordert, um die Kompatibilität unter der Prämisse zu erreichen, dass der Client die Kodierung korrekt deklariert.

So senden und empfangen Sie Nachrichten über ein WebSocket in Java So senden und empfangen Sie Nachrichten über ein WebSocket in Java Aug 16, 2025 am 10:36 AM

Erstellen Sie einen WebSocket -Serverendpunkt, um den Pfad mit @Serverendpoint zu definieren und Verbindungen, Nachrichtenempfang, Schließen und Fehler über @onopen, @onMessage, @onclose und @onError zu behandeln. 2. Stellen Sie sicher, dass Javax.Websocket-API-Abhängigkeiten während der Bereitstellung eingeführt und automatisch vom Container registriert werden. 3. Der Java -Client erhält WebSocketContainer über den ContainerProvider, ruft ConnectToServer auf, um eine Verbindung zum Server herzustellen, und empfängt Nachrichten mit @ClientendPoint -Annotationsklassen. 4. Verwenden Sie die Sitzung GetBasicre

Erforschung gemeinsamer Java -Designmuster mit Beispielen Erforschung gemeinsamer Java -Designmuster mit Beispielen Aug 17, 2025 am 11:54 AM

Das Java -Entwurfsmuster ist eine wiederverwendbare Lösung für allgemeine Softwaredesignprobleme. 1. Der Singleton -Modus stellt sicher, dass es nur eine Instanz einer Klasse gibt, die für die Datenbankverbindung oder Konfigurationsverwaltung geeignet ist. 2. Die Werksmodus entkoppelt die Objekterstellung, und Objekte wie Zahlungsmethoden werden über Fabrikklassen generiert. 3. Der Beobachtermodus benachrichtigt automatisch abhängige Objekte, die für ereignisgesteuerte Systeme wie Wetteraktualisierungen geeignet sind. 4. Der dynamische Schaltalgorithmus des Strategiemodus wie Sortierstrategien verbessert die Code -Flexibilität. Diese Muster verbessern die Code -Wartbarkeit und die Skalierbarkeit, sollten jedoch Überbeanspruchung vermeiden.

Wie benutze ich in Java optional? Wie benutze ich in Java optional? Aug 22, 2025 am 10:27 AM

Useoptional.empty (), optional.of (), andoptional.ofnulle () tocreateoptionalinStancesDendonwhenthevalueisabsinent, nicht null, orpossiblesiblesible.2.CheckForvaluessafelyusingiSent () -Preferactifrisiflyteflythithortefleftwishthorteflecthors.

Bereitstellung einer Java -Anwendung Bereitstellung einer Java -Anwendung Aug 17, 2025 am 12:56 AM

Vorbereitungsdauerung von MajoringMavenorgradletobuildajarorwarfile, ExternalizingConfiguration

Die besten IDES für Java -Entwicklung: eine vergleichende Überprüfung Die besten IDES für Java -Entwicklung: eine vergleichende Überprüfung Aug 12, 2025 pm 02:55 PM

Thebestjavaidein2024Dependyourneeds: 1.CHOOSEINTELLIJIDEAFORPROFESSIONAL, ENTERPRISE, Orull-StackDevelopmentDuetoitsSuperiorCodeIntelligence, Frameworkintegration, andtooling.2. Useclipseforhoxhensibilsibsibilität, LegacyPro-Eigenschaften, oderweigte, oderweigende, oderweilen, oderweilen, orwhenopenen-seourzatioten, legacyprojekts, orwhenopenen-seourzatioten, legacyprojekts, orwhenopenen-seourcatiatiox

See all articles