package ecologylab.oodss.distributed.impl; import java.net.InetSocketAddress; import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.nio.charset.Charset; import org.java_websocket.WebSocket; import org.java_websocket.handshake.ClientHandshake; import org.java_websocket.server.WebSocketServer; import ecologylab.oodss.distributed.server.WebSocketOodssServer; public class WebSocketServerImpl extends WebSocketServer { WebSocketOodssServer oodssServer; public WebSocketServerImpl(InetSocketAddress address, WebSocketOodssServer oodssServer) throws UnknownHostException { super(address); this.oodssServer = oodssServer; } @Override public void onClose( WebSocket conn, int code, String reason, boolean remote ) { if (remote) System.out.println("WebSocket client closing: " + conn.getRemoteSocketAddress() + " because of " + reason); else System.out.println("WebSocket server closing, because of: " + reason); if (conn!= null && conn.isClosed()) oodssServer.shutdownClient(conn); } @Override public void onError( WebSocket conn, Exception ex ) { System.out.println("WebSocket error: " + conn.getRemoteSocketAddress() + " " + ex.getMessage()); } @Override public void onMessage( WebSocket conn, String message ) { System.out.println("WebSocket receives message from: " + conn.getRemoteSocketAddress()); ByteBuffer messageBytes = Charset.forName("UTF8").encode(message); oodssServer.processReceivedMessage(conn, messageBytes); } @Override public void onOpen( WebSocket conn, ClientHandshake handshake ) { System.out.println("WebSocket client connected: " + conn.getRemoteSocketAddress() + " handshake: " + handshake); } @Override public void onMessage( WebSocket conn, ByteBuffer message) { System.out.println("WebSocket receives message from: " + conn.getRemoteSocketAddress()); oodssServer.processReceivedMessage(conn, message); } }