@OnMessage
  public void onMessage(String message) {

    // Ignore inbound messages if there is no associated tunnel
    if (tunnel == null) return;

    GuacamoleWriter writer = tunnel.acquireWriter();

    try {
      // Write received message
      writer.write(message.toCharArray());
    } catch (GuacamoleConnectionClosedException e) {
      logger.debug("Connection to guacd closed.", e);
    } catch (GuacamoleException e) {
      logger.debug("WebSocket tunnel write failed.", e);
    }

    tunnel.releaseWriter();
  }