1

我正在使用 Guacamole v0.9.9 并尝试连接到已经打开的隧道(必须注意创建新隧道完全按预期工作)。

我有一个扩展 GuacamoleHTTPTunnelServlet 的 servlet 并覆盖了 doConnect 方法(还有很多其他的东西,但这与这个问题无关)。这是骨架代码(业务逻辑已被编辑,但我认为不应更改任何内容):

@Override
protected GuacamoleTunnel doConnect(HttpServletRequest request) throws GuacamoleException {

    GuacamoleSocket guacamoleSocket = null;
    GuacamoleTunnelInformation guacamoleTunnelInformation = null;

    GuacamoleConfiguration config = new GuacamoleConfiguration();

    // bunch of common parameteres set on config (like font-size, cursor, etc.)

    GuacamoleClientInformation info = new GuacamoleClientInformation();
    info.setOptimalScreenHeight(630);
    info.setOptimalScreenWidth(1200);

    // This parameter will be supplied in case of connection to existing tunnel
    String uuid = request.getParameter("uuid");

    if (uuid != null && !"".equals(uuid)) {

        guacamoleSocket = new InetGuacamoleSocket("localhost", 4822);   // guacamole daemon listens on port 4822

        config.setConnectionID(uuid);

        // bunch of additional parameters set on config to resemble already connected tunnel

    } else {

        guacamoleSocket = new InetGuacamoleSocket("localhost", 4822);

        // bunch of additional parameters set on config (like host, port, type, etc.)
    }

    // Return a new tunnel which uses the connected socket
    return new SimpleGuacamoleTunnel(new ConfiguredGuacamoleSocket(guacamoleSocket, config, info));
}

本质上,查看库初始化代码,似乎该行config.setConnectionID(uuid);足以select通过提供的现有隧道连接uuid并创建一个连接到它的新隧道。但是,此代码会导致错误并且无法连接隧道 - 我得到的错误是504 Gateway Timeout.

有什么我想念的吗?我应该以不同的方式调用此连接吗?

对于实现此功能的任何意见,我们将不胜感激。

4

0 回答 0