2013-03-06 126 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解決方案。

我希望這能幫助:)