Socket Ein Chat Server Tutorial

JuKu

Top Contributor
Ich habe heute einmal ein Tutorial geschrieben, wie man einen performanten Chat Server & Client in Java mit der Library Vertx.IO schreibt.

Teil 1: http://jukusoft.com/index.php/2016/10/26/tutorial-chat-server-java/
Teil 2: http://jukusoft.com/index.php/2016/10/26/tutorial-chat-server-java-teil-2/

Der Chat Server kann beliebig viele Chat Clients aufnehmen, zumindest solange, bis der RAM voll oder die CPU ausgelastet ist. Es wird nicht das Thread per Connection Model verwendet, sondern Vertx.IO nutzt einen Thread Pool, um viele Verbindungen gleichzeitig abarbeiten zu können.
chatserver.png

sr.png

ch-1.png

Über Feedback würde ich mich freuen! Der komplette Source Code ist ebenfalls in beiden Teilen verlinkt.
 

Jardcore

Top Contributor
Gefällt mir ganz gut.
Einzig die vielen Kommentare finde ich gewöhnungsbedürftig.
Java:
/**
* last client ID
*/
protected static AtomicLong lastID = new AtomicLong(0);

/**
* network socket to client
*/
protected NetSocket socket = null;

/**
* clientID
*/
protected long clientID = 0;

/**
* name of user
*/
protected String username = "";
Würde ich soweit vereinfachen:
Java:
protected static AtomicLong lastClientId = new AtomicLong(0);

protected NetSocket socketToClient = null;
protected long clientId = 0;
protected String username = "";
 

InfectedBytes

Top Contributor
Hab mir die Tutorials noch nicht durchgelesen, aber du solltest die Library schon richtig bezeichnen^^
Die Lib heißt Vert.x und nicht Vertx.io
Letzteres ist bloß die Domain^^
 

JuKu

Top Contributor
Danke für euer Feedback! :)
Freut mich, dass es euch gefällt! :)

Das mit den Variablen kann man echt noch optimieren. :D
Hintergrund ist, dass ich es standardmäßig für die JavaDocs mache, aber für nen Tutorial ist es natürlich unnötig.

Stimmt! :D
Die Library heißt Vert.x, da die Domain aber vertx.io lautet, habe ich ausversehens immer vertx.io geschrieben. :D
Könnte man mal noch korrigieren. :D
 

Jardcore

Top Contributor
Selbst für die JavaDocs ist es nicht nötig.
Wenn deine Attribute und Methoden so benannt sind, dass klar ersichtlich wird was gemacht wird, reicht das vollkommen aus.
Wenn dort sehr technische Abläufe oder bestimmte Anforderungen oder Beschränkungen erforderlich sind, dann kann ein JavaDoc Kommentar helfen. Generell nur bei Schnittstellen.
 
N

neoexpert

Gast
Hi! Ich habe einen Chat-Server mit nodejs geschrieben.
Folgendes: was passiert bei dir wenn ein User sich mehrmals Verbindet? Das habe ich so gelöst: jeder User hat eine Verbindungsliste. Jede neue Verbindung (z.B. Socket) des Users wird zu dieser Liste hinzugefügt. Wird diese Liste leer geht der User offline und jeder der diesen User in der Userliste hat wird darüber benachrichtigt.
Kriegt der User eine Nachricht, soll sie an alle seine Verbindungen gesand werden. Schickt der User eine Nachricht über eine seiner Verbindungen, solln alle seine anderen Verbindungen darüber benachrichtigt werden.
Dann kann man noch Dateien über den selben Port versenden. (Funktioniert bei mir wunderbar).
Habe eine Android APP als Client dazu entwickelt: sieh "NeoChat" im PlayStore
 

JuKu

Top Contributor
Da es sich hierbei nur um ein Tutorial handelt, welches möglichst einfach gehalten sein sollte, unterstützt der Chat Server von meinem Tutorial nur eine Verbindung pro User. Jede Verbindung ist so gesehen also sogar nen neuer User, da ich die Authentifizierung nicht direkt eingebaut habe.
Eine Passworteingabe kann der User aber selbst sehr einfach implementieren, siehe letzte Seite.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
S Java Chat Server Netzwerkprogrammierung 8
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
D Chat Server/mehre Client Netzwerkprogrammierung 9
O Chat (Server) sendet an verschieden Benutzer. Netzwerkprogrammierung 10
L Chat Server programmieren Netzwerkprogrammierung 10
H Socket Java Chat - Verbindung zum Server fehlgeschlagen. Netzwerkprogrammierung 5
I Chat-Client empfängt nichts vom Server Netzwerkprogrammierung 3
A Socket UDP Chat Verbindungsproblem im WWW (Server sendet ins leere) Netzwerkprogrammierung 11
L Socket Chat Server für mehrere Clients Netzwerkprogrammierung 7
AMStyles Client Server basierter Chat Netzwerkprogrammierung 7
D Hilfe ich komme bei meinem UDP chat Server nicht mehr weiter Netzwerkprogrammierung 9
S Client-Server Chat Problem nur im lokalen Netztwerk Netzwerkprogrammierung 23
J Kleines Problem mit Chat Server Netzwerkprogrammierung 2
A server mit 2 Ports : Mit und ohne SSL Chat system Netzwerkprogrammierung 10
K Chat: Nur 1 Verbindung zum Server möglich :( Netzwerkprogrammierung 6
S JAV07P SGD client/server chat Netzwerkprogrammierung 4
L Chat Fenster Netzwerkprogrammierung 1
P Chat in Java Netzwerkprogrammierung 3
C Java Chat Admin Kenzeichnung Netzwerkprogrammierung 14
Androbin Socket Fehlerhafter Applet-Chat Netzwerkprogrammierung 12
C Microsoft Comic Chat Netzwerkprogrammierung 0
G Socket Socket verbindung für Chat System Netzwerkprogrammierung 3
J Chat programmieren Netzwerkprogrammierung 12
TheJavaKid Webcam-Chat im Applet (ChatRoulette Klon) Netzwerkprogrammierung 10
K Socket Chat-GUI eigenes Event nach Empfangen Netzwerkprogrammierung 2
K chat Netzwerkprogrammierung 13
F RMI einfacher Chat - Callbacks(?) funktionieren nicht Netzwerkprogrammierung 7
L Socket Chat funktioniert nicht Netzwerkprogrammierung 2
T Socket Java Chat Netzwerkprogrammierung 2
xDarkSunx Chat JFrame Netzwerkprogrammierung 3
xDarkSunx Hilfe Chat Login Netzwerkprogrammierung 7
E JAVA Chat Netzwerkprogrammierung 19
C Java Chat funktioniert nicht richtig Netzwerkprogrammierung 6
A Multi-User-Chat Netzwerkprogrammierung 2
M Socket Chat-Client-Problem Netzwerkprogrammierung 8
E Userliste für Chat Applet Netzwerkprogrammierung 4
J Framework/ Muster für Chat-ähnliches Programm gesucht Netzwerkprogrammierung 2
M chat als applet umgeschrieben - unbekannter fehler :( Netzwerkprogrammierung 2
P Socket Chat selbst bauen + Multiusereditor Netzwerkprogrammierung 13
T Java Chat über UDP Netzwerkprogrammierung 7
Developer_X Habe fragen zur Chat Programmierung Netzwerkprogrammierung 4
P Java Multiuser Chat hohe Systemauslastung Netzwerkprogrammierung 24
B Die alte Leier: "Chat" Netzwerkprogrammierung 3
M chat funktioniert nicht (Connection refused: connect) Netzwerkprogrammierung 3
R Java-Chat-Applet funktioniert nur in Eclipse Netzwerkprogrammierung 3
DamienX Chat Socketserver/Client. wo ist das Problem? Netzwerkprogrammierung 2
J Client-Client-Chat ohne Serverbeteiligung Netzwerkprogrammierung 2
A Wichtig für einen Chat? Netzwerkprogrammierung 4
S Java Applet Chat Grundsatzfrage Netzwerkprogrammierung 6
R Java Chat über Inet connecten Netzwerkprogrammierung 3
F Chat Programm. Verständnisfrage while-Schleife Netzwerkprogrammierung 7
P Probleme bei Chat programm Netzwerkprogrammierung 2
C Voice Chat Netzwerkprogrammierung 3
G FAQ Chat geht nicht ? Netzwerkprogrammierung 4
T Schriftfarbe im Chat ändern Netzwerkprogrammierung 2
G ActionEvent klappt beim Chat nicht Netzwerkprogrammierung 5
T Chat-Client Netzwerkprogrammierung 12
G Chat zwischen applets: möglich? Netzwerkprogrammierung 2
T Chat mit mehreren Clients Netzwerkprogrammierung 3
C Chat , Streamproblem, PumpingException, Danke Netzwerkprogrammierung 2
S RMI Chat Problem, Client bekannt machen Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
K Lokaler Chat Netzwerkprogrammierung 5
S Chat aufs Internet ausweiten Netzwerkprogrammierung 5
J Router behindert Chat Netzwerkprogrammierung 9
S Knuddels Chat System: Bot / Nachrichten verschicken? Netzwerkprogrammierung 6
G Chat - was brauch ich Netzwerkprogrammierung 2
André B. Brauche Hilfe bei Chat Netzwerkprogrammierung 6
K Problem mit "Chat" Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
Paule Acces denied bei Chat Netzwerkprogrammierung 6
B Multi-chat Problem Netzwerkprogrammierung 3
N Java Chat-Problem Netzwerkprogrammierung 4
G Java Chat mit HTML Cleint Netzwerkprogrammierung 3
G Chat Programm - was ist los? Netzwerkprogrammierung 9
Z chat: wann http und wann sockets verwenden? Netzwerkprogrammierung 11
M Socket Verbindungen für einen Chat Netzwerkprogrammierung 10
R Mini-Chat löst BindException aus Netzwerkprogrammierung 7
F Multiclient Chat Netzwerkprogrammierung 12
K Chat: Verbindung kommt nicht zu stande Netzwerkprogrammierung 6
C IRC CHAT auslesen -> Sockets/input und output Streams Netzwerkprogrammierung 9
S Einfacher Multiuser chat in java Netzwerkprogrammierung 18
R Websockets oder server sent events? Netzwerkprogrammierung 2
W Windows 2019-Server Dienste starten unter Nutzer Netzwerkprogrammierung 1
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
W Socket Server -> lesen von / schreiben zu php-script Netzwerkprogrammierung 6
E Server mit GUI Netzwerkprogrammierung 4
E FTP FTPS Server gibt Fehlernachricht "522 SSL/TLS required on the data channel" zurück Netzwerkprogrammierung 1
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
Eigenen Rechner als Server? Netzwerkprogrammierung 16
FrankenDerStein HTTP Https Server Bibliothek für Linux und Android gesucht. Netzwerkprogrammierung 7
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
J Datei Download vom Server Netzwerkprogrammierung 8
izoards Mehrere TCP Verbindungen auf einen Server [alles Local] Netzwerkprogrammierung 2
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
J Client-Server und SOAP Netzwerkprogrammierung 23
K Threads/Server/telnet Fehler Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben