Интеграция Java-сервлета Guacamole с проектом Rails

Я пытаюсь добавить Guacamole (клиент html5 vnc) в существующий проект rails, но я запускаю в некоторые проблемы, потому что сервер гуакамоле реализован на Java. На основе обзора здесь http://guac-dev.org/doc/gug/writing-you-own-guacamole-app.html, мне нужно создать 1. GuacamoleHTTPTunnelServlet (туннель между клиентом JavaScript и службой Guacd) и 2. сам клиент javascript. . См. прикрепленное изображение для справки. Создание клиента javascript кажется простым, потому что весь javascript уже задан, и мне просто нужно добавить его в представление rails. Сложная часть, если это вообще возможно, — это интеграция Java-сервлета GuacamoleHTTPTunnelServlet с рельсами.

  1. Есть ли способ, чтобы рельсы обслуживали javascript, но чтобы javascript взаимодействовал с другим сервером на той же машине? Я предполагаю, что нет из-за той же политики происхождения.
  2. Есть ли способ перенаправить вызовы javascript с сервера rails -> сервлет java без потери производительности? Я не совсем понимаю, как клиент javascript взаимодействует с сервером, но я думаю, что он передает объекты java.

Я никогда не пробовал ничего подобного раньше, поэтому, пожалуйста, извините меня за глупость.

введите здесь описание изображения


person stackOverlord    schedule 06.03.2013    source источник
comment
Вы когда-нибудь строили это? Я был бы очень заинтересован в реализации, на которой вы остановились. Пожалуйста, дайте нам знать, как все прошло!   -  person Jesse Sanford    schedule 14.01.2016


Ответы (1)


Я играл с гуакамоле, и я думаю, что ваш лучший вариант — переписать гуакамоле-бэкенд (который связывается с демоном guacd) в рельсах. В любом случае постараюсь ответить на ваши вопросы:

  1. Вы можете проксировать запросы ajax с помощью стойки, например:
    Как проксировать запросы AJAX с помощью Rack Middleware?

    Другой способ — использовать обратный прокси-сервер (nginx?), например:
    http://yourdomain.com/your/rails/view/url
    http://yourdomain.com/guacamole

    Таким образом, клиент (браузер) будет думать, что ваши приложения находятся на одном хосте, избегая политики одинакового происхождения javascript. iframe будет отличным решением.

  2. Javascript взаимодействует с туннельным сервлетом, который проксирует запросы к демону guacd (без объектов Java, только настраиваемый протокол). Чтобы повысить производительность, вы можете использовать обратный прокси-сервер (ответ 1, например: nginx) вместо решения ruby/rack.

Я надеюсь, что это может помочь :)

person Piero Randazzo    schedule 29.03.2013