将Guacamole Java Servlet与Rails项目集成

时间:2013-03-06 03:04:20

标签: ruby-on-rails tomcat vnc guacamole

我正在尝试将Guacamole(一个html5 vnc客户端)添加到现有的rails项目中,但我遇到了一些麻烦,因为Guacamole服务器是用Java实现的。基于此处的概述http://guac-dev.org/doc/gug/writing-you-own-guacamole-app.html,我需要创建1.一个GuacamoleHTTPTunnelServlet(JavaScript客户端和Guacd服务之间的隧道)和2. javascript客户端本身。参见附图以供参考。创建javascript客户端似乎很容易,因为已经给出了所有的javascript,我只需要将它添加到rails视图中。如果可能的话,困难的部分是将GuacamoleHTTPTunnelServlet java servlet与rails集成。

  1. 有没有办法让rails提供javascript,但让javascript与同一台机器上的其他服务器进行通信?我猜不是因为同样的原产地政策。
  2. 有没有办法转发来自rails服务器的javascript调用 - > java servlet没有失去性能?我不完全清楚javascript客户端如何与服务器通信,但我认为它正在传递java对象。
  3. 我以前从未尝试过这样的事情所以请原谅我任何愚蠢。

    enter image description here

1 个答案:

答案 0 :(得分:2)

我玩鳄梨酱,我认为你最好的选择是在铁轨中重写guacamole后端(与guacd守护进程通信)。无论如何,我会尽力回答你的问题:

  1. 您可以使用rack代理ajax请求,例如:
    How do I proxy AJAX requests with Rack Middleware?

    另一种方法是使用反向代理(nginx?),例如: http://yourdomain.com/your/rails/view/url
    http://yourdomain.com/guacamole

    通过这种方式,客户端(浏览器)会认为您的应用程序位于同一主机下,从而避免了javascript相同的源策略。 iframe将是一个很好的解决方案。

  2. Javascript与隧道servlet通信,代理对guacd守护程序的请求(没有java对象,只有自定义协议)。为了加快性能,您可以使用反向代理(回答1,例如:nginx)而不是ruby / rack解决方案。

  3. 我希望这有助于:)