3

我正在尝试将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 server -> java servlet 的 javascript 调用?我不完全清楚javascript客户端如何与服务器通信,但我认为它正在传递java对象。

我以前从未尝试过这样的事情,所以请原谅我的愚蠢。

在此处输入图像描述

4

1 回答 1

2

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

  1. 您可以使用机架代理 ajax 请求,例如:
    如何使用机架中间件代理 AJAX 请求?

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

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

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

我希望这可以帮助:)

于 2013-03-29T11:09:15.397 回答