我正在尝试将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集成。
我以前从未尝试过这样的事情所以请原谅我任何愚蠢。
答案 0 :(得分:2)
我玩鳄梨酱,我认为你最好的选择是在铁轨中重写guacamole后端(与guacd守护进程通信)。无论如何,我会尽力回答你的问题:
您可以使用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将是一个很好的解决方案。
Javascript与隧道servlet通信,代理对guacd守护程序的请求(没有java对象,只有自定义协议)。为了加快性能,您可以使用反向代理(回答1,例如:nginx)而不是ruby / rack解决方案。
我希望这有助于:)