Antwort vom Server an mehreren Clients senden

RezaScript

Bekanntes Mitglied
Hallo,

ich verwende WebSocket für einen Chat. Die Verbindung zwischen Client und Server funktioniert soweit sehr gut. Ich kann Daten an Server senden und empfangen. Das ganze funktioniert aber nur mit einem einzigen Client. Was muss ich machen, dass wenn der Server sendet, alle anderen Clients auch die Meldung erhalten?

Java:
package ch.yourclick.zt.chat;

import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/chat")
public class ChatEndpoint {
    @OnOpen
    public void handleOpen() {
        System.out.println("Client is now connected");
    }

    @OnMessage
    public String handleMessage(String message) {
        System.out.println("Client: " + message + "\n");
        return message;
    }

    @OnClose
    public void handleClose() {
        System.out.println("Client is now disconnected");
    }

    @OnError
    public void handleError(Throwable t) {
        t.printStackTrace();
    }
}

HTML:
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Chat</title>
</head>
<body>

<form id="chat">
    <input type="text" id="client-msg">
    <input type="submit" value="Send">
</form>

<div class="result"></div>

<script src='../assets/js/script.js'></script>
</body>
</html>

Javascript:
const log = console.log.bind(console);

/* CHAT */
const webSocket = new WebSocket('ws://localhost:8080/zt_productions_war/chat');
const chatResult = document.querySelector('.result');

// Open
webSocket.onopen = (msg) => {
    log("Server is now connected\n");
};

// Message
webSocket.onmessage = (msg) => {
    chatResult.innerHTML += "Server says: " + msg.data;
};

// Close
webSocket.onclose = () => {
    webSocket.send('Client has been disconnected');
    log("Server is now closed\n");
};

// Error
webSocket.onerror = () => {
  log("There is an error. Try it again later.");
};

// Submit
document.getElementById("chat").addEventListener('submit', (e) => {
    e.preventDefault();
    let clientMsg = document.getElementById('client-msg');
    webSocket.send(clientMsg.value);
    chatResult.innerHTML += clientMsg.value + '<br>';
    clientMsg.value = '';
});
 

mihe7

Top Contributor
Du brauchst nur eine statische Liste von Sessions mittels ConcurrentLinkedDeque bzw. ConcurrentLinkedQueue verwalten. Beim Öffnen fügst Du die aktuelle Session zur Liste hinzu, beim Schließen bzw. im Fehlerfall (handleError) entfernst Du die Session aus der Liste. Zum Senden iterierst Du über die Liste und schickst die Message raus.
 

RezaScript

Bekanntes Mitglied
Okay, einfach nur damit ich die Logik richtig verstanden habe: Bei einer Verbindung mit dem Socket bekommt jeder Client eine Session. Der Server sendet via Loop eine Nachricht an alle Clients, welche eine Session haben. Soweit richtig? Wenn ja, wie könnte ich eine Message an alle Clients schicken, welche eine Session haben? Momentan sende ich die Nachricht ja nur mit return message.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Sockets. Bekomm keine Antwort vom Server. Java Basics - Anfänger-Themen 7
W GET Anfrage resultiert in unendlicher Antwort Java Basics - Anfänger-Themen 1
G Wie wartet man bis ein URL eine Antwort zurückgibt? Java Basics - Anfänger-Themen 5
O Warum ist meine Antwort falsch? Java Basics - Anfänger-Themen 3
K Unerwartete Antwort Java Basics - Anfänger-Themen 1
E Mathematische Aufgabe: Antwort entspricht nicht der Lösung Java Basics - Anfänger-Themen 5
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
J Frage Antwort Spiel - Wie Zeitcountdown realisieren? Java Basics - Anfänger-Themen 2
C Warten auf Antwort Java Basics - Anfänger-Themen 22
B Frage Antwort Java Basics - Anfänger-Themen 13
M Aus CSV-Datei lesen und anzeigen (bitte schnell um Antwort) Java Basics - Anfänger-Themen 6
J Leichte Java Anfängerfrage. Bitte schnelle Antwort. :) Java Basics - Anfänger-Themen 10
C Antwort header anzeigen Java Basics - Anfänger-Themen 5
G Ausg. in JSP erzeugen die als Antwort an Client gesch. wird Java Basics - Anfänger-Themen 2
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
K Verständnisproblem bei Server/Client Java Basics - Anfänger-Themen 3
A Server - Client Nachrichtenaustausch über Eventbus Java Basics - Anfänger-Themen 12
FireHorses Benutzernamen aus PrivateChannel(Interaction) auf Server bringen Java Basics - Anfänger-Themen 0
HolyFUT Best Practice Architektur WebSocket Server Java Basics - Anfänger-Themen 1
S Server Java Basics - Anfänger-Themen 4
S Server Java Basics - Anfänger-Themen 3
D Verbesserungsvorschläge zur Struktur einer Client Server Desktop Chat App Java Basics - Anfänger-Themen 24
D Unerwartetes Verhalten bei Client Server Chat App Java Basics - Anfänger-Themen 12
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
M CS GO Server mit Java steuern Java Basics - Anfänger-Themen 3
K Verständnisfrage Server/Client BufferedReader, PrintWriter Java Basics - Anfänger-Themen 2
C Was ist nötig für ein Java-Programm auf Server für Website Java Basics - Anfänger-Themen 18
B DHCP-Server Adresse ermitteln Java Basics - Anfänger-Themen 4
A Client-Server Kommunikation Java Basics - Anfänger-Themen 3
F Mehrere Server Sockets in einer Anwendung Java Basics - Anfänger-Themen 9
W Netwerkprogrammierung und Http Server Java Basics - Anfänger-Themen 10
S Server - für jeden Client ein Serverthread Java Basics - Anfänger-Themen 2
G sql server connection mit windows authentication Java Basics - Anfänger-Themen 2
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
L Erste Schritte Erste Versuche mit Server und Client Java Basics - Anfänger-Themen 7
elischa Client-Server IO und Stream Steuerung ? Java Basics - Anfänger-Themen 2
U Erste Schritte Server will nicht übergebenes Objekt speichern Java Basics - Anfänger-Themen 5
B IP Adresse von Wildfly Server Java Basics - Anfänger-Themen 1
cezary Server läßt sich nicht starten Java Basics - Anfänger-Themen 2
J Java Server Pages - Verständnisfrage Java Basics - Anfänger-Themen 2
I Print Client -> Server -> Client? Java Basics - Anfänger-Themen 1
I lokales Programm mit Client/Server Programm kommunizieren Java Basics - Anfänger-Themen 3
H java.lang.NoClassDefFoundError Run as>> Run on Server Java Basics - Anfänger-Themen 2
F String zu einem Server senden Java Basics - Anfänger-Themen 4
N Server Zeit zur lokalen Zeit setzen. Java Basics - Anfänger-Themen 0
J TCP MultiThreaded Server und Client - irgendwo ist der Fehler, aber ich find ihn nicht Java Basics - Anfänger-Themen 3
I ical - Datei auf Server ablegen und Kalender abbonieren Java Basics - Anfänger-Themen 0
T Eclipse - GlassFish Server!? Java Basics - Anfänger-Themen 1
I Java Server Faces mit Glassfish Webseite veröffentlichen Java Basics - Anfänger-Themen 4
M Input/Output tcp-Server mit statischer Parallelität Java Basics - Anfänger-Themen 7
G Multiple Clients and one Server Java Basics - Anfänger-Themen 2
K Java Client > Python Server Java Basics - Anfänger-Themen 0
F jabva 7.21 läuft nicht auf windows server 2012? Java Basics - Anfänger-Themen 9
D Socket ---> Server Socket worauf muss ich achten? Java Basics - Anfänger-Themen 2
S Java - Client/Server mit Stomp kurze Frage Java Basics - Anfänger-Themen 0
I JDK SERVER -jar stoppen Java Basics - Anfänger-Themen 5
Screen Wie Propertydatei im Server beschreiben? Java Basics - Anfänger-Themen 7
K threaded server Java Basics - Anfänger-Themen 18
E Client Server Java Basics - Anfänger-Themen 12
Q Datenbank nicht über separaten Server Java Basics - Anfänger-Themen 4
H Einfache Client/Server-Kommunikation Java Basics - Anfänger-Themen 16
L Chat server Java Basics - Anfänger-Themen 4
O Server Client Problem Java Basics - Anfänger-Themen 2
B Java Server Side Java Basics - Anfänger-Themen 14
H Java Server/Client, HTML Seite anzeigen Java Basics - Anfänger-Themen 2
L Server pingt Client und fordert Info Java Basics - Anfänger-Themen 2
G JObjekte dynamisch vom Server erzeugen lassen Java Basics - Anfänger-Themen 4
A Server logs auslesen Java Basics - Anfänger-Themen 6
Z Threads, Server, GUI Java Basics - Anfänger-Themen 4
R Server/Client für Spiel Java Basics - Anfänger-Themen 2
M Java class auf Server starten Java Basics - Anfänger-Themen 5
U Java-Programm auf einem Server starten Java Basics - Anfänger-Themen 33
D Java Applet Dateien auf Server auslesen? Java Basics - Anfänger-Themen 8
X Applet - Client/Server Java Basics - Anfänger-Themen 2
I Interface Comparable für Server-Item-Interface Java Basics - Anfänger-Themen 12
N Methoden Test ob Server vorhanden ist Java Basics - Anfänger-Themen 4
S .Bat Server von .java Starten Java Basics - Anfänger-Themen 5
L Server mit mehreren Clients Java Basics - Anfänger-Themen 25
L Bild versenden über Client/Server Java Basics - Anfänger-Themen 10
S Klassen Server und Client Java Basics - Anfänger-Themen 3
M Client - DB-Server Struktur Java Basics - Anfänger-Themen 7
M daytime-Server Port 13 Java Basics - Anfänger-Themen 2
U Probleme mit Server-Client implementierung Java Basics - Anfänger-Themen 5
O (von Applet) daten an Server übergeben Java Basics - Anfänger-Themen 4
W mehrere clients auf einem server Java Basics - Anfänger-Themen 2
R Server-Daten sichern/verschlüsseln Java Basics - Anfänger-Themen 10
N Applets: Objekte vom Server laden Java Basics - Anfänger-Themen 4
G Server-Client Kommunikation Java Basics - Anfänger-Themen 3
V pfad.exists() gilt nicht für "//server/a/xyz.jpg"? Java Basics - Anfänger-Themen 12
F SQL Server aus Umlaute werden Fragezeichen Java Basics - Anfänger-Themen 4
S FTP Server Java Basics - Anfänger-Themen 3
P Application Server Java Basics - Anfänger-Themen 3
B Object an Server senden, Server antwortet mit objekt? Java Basics - Anfänger-Themen 7
C Bilder von Server zu Server kopieren über Webdav(Sardine) Java Basics - Anfänger-Themen 5
H Java-Server mit Browser ansprechen Java Basics - Anfänger-Themen 19
M Standard-Klassen auf Server nicht verfügbar Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben