2013-03-06 72 views
2

我试图将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集成。将Guacamole Java Servlet与Rails项目集成

  1. 有没有办法让rails提供javascript,但让javascript与同一台机器上的不同服务器通信?我猜不是因为相同的原产地政策。
  2. 有没有什么办法可以从rails server转发javascript调用 - > java servlet而不会失去性能?我并不完全清楚JavaScript客户端如何与服务器进行通信,但我认为它正在传递Java对象。

我从来没有尝试过这样的事情,所以请原谅我的任何愚蠢。

enter image description here

+0

你有没有建立这个?我会对你落实的实施感兴趣。请让我们知道它是如何去的! – 2016-01-14 05:37:01

回答

2

我与鳄梨发挥各地,我认为你最好的选择是重写鳄梨后端(与guacd守护comunicates)的轨道。无论如何,我会尽量回答您的问题:

  1. 您可以与机架,前代理Ajax请求:
    How do I proxy AJAX requests with Rack Middleware?

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

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

  2. Javascript与隧道Servlet进行通信,该隧道servlet代理请求到guacd守护进程(没有Java对象,只是一个自定义协议)。为了加速表演,您可以使用反向代理(答案1,例如:nginx)而不是ruby/rack解决方案。

我希望这能帮助:)