Wie implementiert man einen WebSocket-Server in Java?
Posted: 16 Jan 2025, 10:48
Ich arbeite daran, meinen ersten Websocket-Server für eine Kommunikations-App einzurichten. Ich kann anscheinend nicht herausfinden, wie Websockets in Java implementiert werden.
Ich habe erfolglos versucht, einen annotationsbasierten Endpunkt zu erstellen, bin mir aber nicht sicher, wo die Client-Informationen durchkommen. Dies ist im Grunde der Kern meines Codes, ohne auf banale Details einzugehen.
Ich versuche, die Klasse MessageHelper mit der Websocket-Informationsübertragung zu befassen, ich verstehe einfach nicht, wie ich die Übertragung tatsächlich dorthin bewerkstelligen kann.
Ich habe erfolglos versucht, einen annotationsbasierten Endpunkt zu erstellen, bin mir aber nicht sicher, wo die Client-Informationen durchkommen. Dies ist im Grunde der Kern meines Codes, ohne auf banale Details einzugehen.
Ich versuche, die Klasse MessageHelper mit der Websocket-Informationsübertragung zu befassen, ich verstehe einfach nicht, wie ich die Übertragung tatsächlich dorthin bewerkstelligen kann.
Code: Select all
class MainServer implements Runnable {
// VARIABLES
ServerSocket serverSocket = null;
int port;
// CONSTRUCTORS
MainServer(int p) {
this.port = p;
}
// METHODS
public void run() {
openServerSocket();
while(!isStopped()){
try{
clientSocket = serverSocket.accept();
} catch(IOException e) {
// Do something
}
new Thread(new MainThread(clientSocket)).start();
}
}
}
// Other methods below.
Code: Select all
public class MainThread {
final Socket socket;
MainThread(Socket s) {
this.socket = s;
}
public void run() {
try{
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String input = br.readLine(), read = br.readLine();
while(!input.isEmpty()) {
read += "\n";
read += input;
input = br.readLine();
}
/**
* Everything works fine, I'm just not sure where to go
* from here. I tried creating MessageHelper into the java
* websocket implementation using annotations but it did not
* accept input from the client after the handshake was
* made. My client would send something but it would just
* give and EOFException.
**/
if(websocketHandshakeRequest(read)) {
MessageHelper messageHelper =
new MessageHelper(this.socket);
} else {
// Do something
}
} catch(Exception e) {
// Do something.
}
}
}