mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 00:53:21 +00:00 
			
		
		
		
	GUAC-442: Add annotation-driven onMessage() as well - Jetty will not call MessageHandler.onMessage() at least when annotations are used. Not sure if this is different for programmatically-loaded endpoints.
This commit is contained in:
		| @@ -28,6 +28,9 @@ import javax.websocket.CloseReason.CloseCode; | ||||
| import javax.websocket.Endpoint; | ||||
| import javax.websocket.EndpointConfig; | ||||
| import javax.websocket.MessageHandler; | ||||
| import javax.websocket.OnClose; | ||||
| import javax.websocket.OnMessage; | ||||
| import javax.websocket.OnOpen; | ||||
| import javax.websocket.RemoteEndpoint; | ||||
| import javax.websocket.Session; | ||||
| import org.glyptodon.guacamole.GuacamoleException; | ||||
| @@ -100,6 +103,7 @@ public abstract class GuacamoleWebSocketTunnelEndpoint extends Endpoint { | ||||
|     protected abstract GuacamoleTunnel createTunnel(Session session, EndpointConfig config) throws GuacamoleException; | ||||
|  | ||||
|     @Override | ||||
|     @OnOpen | ||||
|     public void onOpen(final Session session, EndpointConfig config) { | ||||
|  | ||||
|         try { | ||||
| @@ -118,27 +122,17 @@ public abstract class GuacamoleWebSocketTunnelEndpoint extends Endpoint { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         // Return new WebSocket which communicates through tunnel | ||||
|         // Manually register message handler | ||||
|         session.addMessageHandler(new MessageHandler.Whole<String>() { | ||||
|  | ||||
|             @Override | ||||
|             public void onMessage(String message) { | ||||
|  | ||||
|                 GuacamoleWriter writer = tunnel.acquireWriter(); | ||||
|  | ||||
|                 // Write received message | ||||
|                 try { | ||||
|                     writer.write(message.toCharArray()); | ||||
|                 } | ||||
|                 catch (GuacamoleException e) { | ||||
|                     logger.debug("Tunnel write failed.", e); | ||||
|                 } | ||||
|  | ||||
|                 tunnel.releaseWriter(); | ||||
|                 GuacamoleWebSocketTunnelEndpoint.this.onMessage(message); | ||||
|             } | ||||
|  | ||||
|         }); | ||||
|  | ||||
|         // Prepare read transfer thread | ||||
|         Thread readThread = new Thread() { | ||||
|  | ||||
|             /** | ||||
| @@ -201,7 +195,25 @@ public abstract class GuacamoleWebSocketTunnelEndpoint extends Endpoint { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @OnMessage | ||||
|     public void onMessage(String message) { | ||||
|  | ||||
|         GuacamoleWriter writer = tunnel.acquireWriter(); | ||||
|  | ||||
|         try { | ||||
|             // Write received message | ||||
|             writer.write(message.toCharArray()); | ||||
|         } | ||||
|         catch (GuacamoleException e) { | ||||
|             logger.debug("Tunnel write failed.", e); | ||||
|         } | ||||
|  | ||||
|         tunnel.releaseWriter(); | ||||
|  | ||||
|     } | ||||
|      | ||||
|     @Override | ||||
|     @OnClose | ||||
|     public void onClose(Session session, CloseReason closeReason) { | ||||
|  | ||||
|         try { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user