|
|
- package net.jrtechs.www.server.old;
-
- import org.java_websocket.WebSocket;
- import org.java_websocket.handshake.ClientHandshake;
- import org.java_websocket.server.WebSocketServer;
- import org.json.JSONObject;
-
- import java.net.InetSocketAddress;
- import java.util.HashSet;
- import java.util.Set;
-
-
- /**
- * Socket server which listens for clients
- *
- * @author Jeffery Russell 5-26-18
- */
- public class Server extends WebSocketServer
- {
- /** port to listen on **/
- private static int TCP_PORT = 4444;
-
- /** clients connected to the server **/
- private Set<Client> clients;
-
-
- /**
- * Initializes the server and creates an empty set of clients
- */
- public Server()
- {
- super(new InetSocketAddress(TCP_PORT));
-
- System.out.println(super.getAddress());
- clients = new HashSet<>();
- }
-
-
- @Override
- public void onOpen(WebSocket conn, ClientHandshake handshake)
- {
- System.out.println("New connection from " +
- conn.getRemoteSocketAddress().getAddress().getHostAddress());
- }
-
- @Override
- public void onClose(WebSocket conn, int code, String reason, boolean remote)
- {
- this.removeClient(conn);
- System.out.println("Closed connection to " +
- conn.getRemoteSocketAddress().getAddress().getHostAddress());
- }
-
- @Override
- public void onMessage(WebSocket conn, String message)
- {
- JSONObject object = new JSONObject(message);
-
- if(object.has("graph"))
- {
- for (Client client : clients)
- {
- if(client.getSocket() == conn)
- {
- return;
- }
- }
-
- Client newClient = new Client(conn, object.getString("id"),
- object.getInt("graph"));
- clients.add(newClient);
-
- newClient.start();
- }
- else if(object.has("go"))
- {
- for(Client client: clients)
- {
- if(client.getSocket() == conn)
- {
- client.sendNextRequest();
- }
- }
- }
-
-
- }
-
- @Override
- public void onError(WebSocket conn, Exception ex)
- {
- ex.printStackTrace();
- if (conn != null)
- {
- clients.remove(conn);
- // do some thing if required
- }
- System.out.println("ERROR from " + conn.getRemoteSocketAddress()
- .getAddress().getHostAddress());
- }
-
- @Override
- public void onStart() {
-
- }
-
-
- /**
- * Removes a client from the main list of clients
- * based on the websocket that needs to be removed.
- *
- * @param conn
- */
- public void removeClient(WebSocket conn)
- {
- for(Client c: clients)
- {
- if(c.getSocket() == conn)
- {
- this.clients.remove(c);
- c.stop();
- }
- }
- }
-
-
- /**
- * Starts the web socket server
- *
- * @param args
- */
- public static void main(String[] args)
- {
- new Server().start();
- }
-
- }
|