Java WebRTC server client game

1 week ago 18
ARTICLE AD BOX

i have been making a simple server -> client datagramsocket racing game with java, the server has all the logic like hitboxes etc, and the client only process graphics and receive parameters
the thing is i want to use WASM to play my game in the browser (both server and client), and i learned that i need to use websockets (tcp), the i learned that i need to use webrtc for udp (that what i use here)
i dont know how it works and how can i remake my server (i dont think its much of a replacement, so I guess I have to change the way I send and receive messages)
look you have my server.java if that serves as reference:

package online; import java.io.IOException; import java.net.*; import java.util.ArrayList; public class Server extends Thread { public static DatagramSocket socket; private int port = 5555; private boolean end = false; private final int MAX_CLIENTS = 8; private int connectedUsers = 0; public static ArrayList<User> users = new ArrayList<User>(); private NetManager netManager; public String move = ""; public int clientIndexed = 0; public Server(NetManager netManager) { this.netManager = netManager; try { System.out.println("server iniciado en el puerto "+port); socket = new DatagramSocket(port); } catch (SocketException e) { throw new RuntimeException(e); } } @Override public void run() { Runtime.getRuntime().addShutdownHook(new Thread(() -> { System.out.println("Server shutting down"); this.pingEveryone("serverClosed"); end = true; })); do { DatagramPacket packet = new DatagramPacket(new byte[1024], 1024); try { socket.receive(packet); processMessage(packet); } catch (IOException e) { throw new RuntimeException(e); } } while (!end); } public void pingEveryone(String message) { for(User user : users) { sendMessage(message, user.getIp(), user.getPort()); } } private void processMessage(DatagramPacket packet) { String message = (new String(packet.getData())).trim(); // System.out.println(message); String[] parts = message.split("\\$"); switch (parts[0]) { case "connect": if(users.size() >= MAX_CLIENTS) { sendMessage("serverfull", packet.getAddress(), packet.getPort()); } else { sendMessage("connected;"+connectedUsers, packet.getAddress(), packet.getPort()); this.connectedUsers++; User newUser = new User(parts[2], packet.getAddress(), packet.getPort()); users.add(newUser); netManager.placeNewPlayer(connectedUsers, parts[1]); } break; case "move": move = parts[1]; clientIndexed = searchUser(packet); netManager.moveCar(parts[1], searchUser(packet)); break; case "disconnect": int index = searchUser(packet); users.remove(index); netManager.deleteRacer(index); this.connectedUsers--; break; } } private int searchUser(DatagramPacket packet) { int i = 0; int indexUser = -1; while (i < users.size() && indexUser == -1) { User user = this.users.get(i); String id = packet.getAddress()+":"+packet.getPort(); if(id.equals(user.getId())) { indexUser = i; } i++; } return indexUser; } public void sendMessage(String message, InetAddress ipDestination, int port) { byte[] datosByte = message.getBytes(); DatagramPacket packet = new DatagramPacket(datosByte, datosByte.length, ipDestination, port); try { socket.send(packet); } catch (IOException e) { throw new RuntimeException(e); } } public void finish() { System.out.println("me voy a la mierda"); pingEveryone("serverClosed"); this.end = true; socket.close(); this.interrupt(); } }

and its that, where do i start, what i need to know, dont be rude I learned about webrtc a few days ago and I dont even know where to start looking at documentation or tutorials (to avoid getting banned, Im not asking about libraries, but rather where to start or for advice)
thanks!!!!

Read Entire Article