mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +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.Endpoint;
|
||||||
import javax.websocket.EndpointConfig;
|
import javax.websocket.EndpointConfig;
|
||||||
import javax.websocket.MessageHandler;
|
import javax.websocket.MessageHandler;
|
||||||
|
import javax.websocket.OnClose;
|
||||||
|
import javax.websocket.OnMessage;
|
||||||
|
import javax.websocket.OnOpen;
|
||||||
import javax.websocket.RemoteEndpoint;
|
import javax.websocket.RemoteEndpoint;
|
||||||
import javax.websocket.Session;
|
import javax.websocket.Session;
|
||||||
import org.glyptodon.guacamole.GuacamoleException;
|
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;
|
protected abstract GuacamoleTunnel createTunnel(Session session, EndpointConfig config) throws GuacamoleException;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@OnOpen
|
||||||
public void onOpen(final Session session, EndpointConfig config) {
|
public void onOpen(final Session session, EndpointConfig config) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -118,27 +122,17 @@ public abstract class GuacamoleWebSocketTunnelEndpoint extends Endpoint {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return new WebSocket which communicates through tunnel
|
// Manually register message handler
|
||||||
session.addMessageHandler(new MessageHandler.Whole<String>() {
|
session.addMessageHandler(new MessageHandler.Whole<String>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMessage(String message) {
|
public void onMessage(String message) {
|
||||||
|
GuacamoleWebSocketTunnelEndpoint.this.onMessage(message);
|
||||||
GuacamoleWriter writer = tunnel.acquireWriter();
|
|
||||||
|
|
||||||
// Write received message
|
|
||||||
try {
|
|
||||||
writer.write(message.toCharArray());
|
|
||||||
}
|
|
||||||
catch (GuacamoleException e) {
|
|
||||||
logger.debug("Tunnel write failed.", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
tunnel.releaseWriter();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Prepare read transfer thread
|
||||||
Thread readThread = new 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
|
@Override
|
||||||
|
@OnClose
|
||||||
public void onClose(Session session, CloseReason closeReason) {
|
public void onClose(Session session, CloseReason closeReason) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
Reference in New Issue
Block a user