001package ca.bc.webarts.servlet; 002 003import org.eclipse.jetty.websocket.api.Session; 004import org.eclipse.jetty.websocket.api.WebSocketAdapter; 005 006/** A very basic event socket impl that the AjaxRestWebsocketListener uses to handle webSocket Events. **/ 007public class EventSocket extends WebSocketAdapter 008{ 009 Session session_ = null; 010 011 @Override 012 public void onWebSocketConnect(Session sess) 013 { 014 super.onWebSocketConnect(sess); 015 System.out.println("Socket Connected: " + sess); 016 session_ = sess; 017 } 018 019 @Override 020 public void onWebSocketText(String message) 021 { 022 super.onWebSocketText(message); 023 String img = ""; 024 System.out.println("Received TEXT message: " + message); 025 if(message.startsWith("img")) img=message.substring(3).trim(); 026 try 027 { 028 if(session_!=null) 029 { 030 session_.getRemote().sendString(" Received: "+message); 031 if(img!=null && !"".equals(img) ) 032 { 033 System.out.println(" )))) Socket Received image request for: " + img); 034 java.io.File fi = new java.io.File(img); 035 byte[] fileContent=null; 036 try 037 { 038 fileContent = java.nio.file.Files.readAllBytes(fi.toPath()); 039 java.nio.ByteBuffer buf = java.nio.ByteBuffer.wrap(fileContent); 040 041 session_.getRemote().sendBytes(buf); 042 } 043 catch (java.io.IOException e) 044 { 045 // TODO Auto-generated catch block 046 e.printStackTrace(); 047 } 048 } 049 } 050 } 051 catch (java.io.IOException ioEx) 052 { 053 System.out.println("ERROR: can't get remote host connection"); 054 } 055 } 056 057 @Override 058 public void onWebSocketClose(int statusCode, String reason) 059 { 060 super.onWebSocketClose(statusCode,reason); 061 System.out.println("Socket Closed: [" + statusCode + "] " + reason); 062 session_ = null; 063 } 064 065 @Override 066 public void onWebSocketError(Throwable cause) 067 { 068 super.onWebSocketError(cause); 069 cause.printStackTrace(System.err); 070 } 071}