Home | History | Annotate | Download | only in echo
      1 package fi.iki.elonen.samples.echo;
      2 
      3 import fi.iki.elonen.NanoHTTPD;
      4 import fi.iki.elonen.WebSocket;
      5 import fi.iki.elonen.WebSocketFrame;
      6 
      7 import java.io.IOException;
      8 
      9 /**
     10 * @author Paul S. Hawke (paul.hawke (at) gmail.com)
     11 *         On: 4/23/14 at 10:34 PM
     12 */
     13 class DebugWebSocket extends WebSocket {
     14     private final boolean debug;
     15 
     16     public DebugWebSocket(NanoHTTPD.IHTTPSession handshake, boolean debug) {
     17         super(handshake);
     18         this.debug = debug;
     19     }
     20 
     21     @Override
     22     protected void onPong(WebSocketFrame pongFrame) {
     23         if (debug) {
     24             System.out.println("P " + pongFrame);
     25         }
     26     }
     27 
     28     @Override
     29     protected void onMessage(WebSocketFrame messageFrame) {
     30         try {
     31             messageFrame.setUnmasked();
     32             sendFrame(messageFrame);
     33         } catch (IOException e) {
     34             throw new RuntimeException(e);
     35         }
     36     }
     37 
     38     @Override
     39     protected void onClose(WebSocketFrame.CloseCode code, String reason, boolean initiatedByRemote) {
     40         if (debug) {
     41             System.out.println("C [" + (initiatedByRemote ? "Remote" : "Self") + "] " +
     42                     (code != null ? code : "UnknownCloseCode[" + code + "]") +
     43                     (reason != null && !reason.isEmpty() ? ": " + reason : ""));
     44         }
     45     }
     46 
     47     @Override
     48     protected void onException(IOException e) {
     49         e.printStackTrace();
     50     }
     51 
     52     @Override
     53     protected void handleWebsocketFrame(WebSocketFrame frame) throws IOException {
     54         if (debug) {
     55             System.out.println("R " + frame);
     56         }
     57         super.handleWebsocketFrame(frame);
     58     }
     59 
     60     @Override
     61     public synchronized void sendFrame(WebSocketFrame frame) throws IOException {
     62         if (debug) {
     63             System.out.println("S " + frame);
     64         }
     65         super.sendFrame(frame);
     66     }
     67 }
     68