2013-03-06 3 views
2

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

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

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

enter image description here

+0

ли вы когда-нибудь построить это? Я был бы очень заинтересован в реализации, на которой вы остановились. Пожалуйста, дайте нам знать, как все прошло! –

ответ

2

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

  1. Вы можете запросы прокси Ajax с стойки, например:
    How do I proxy AJAX requests with Rack Middleware?

    Другой способ заключается в использовании обратного прокси-сервера, экс (Nginx?):
    http://yourdomain.com/your/rails/view/url
    http://yourdomain.com/guacamole

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

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

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

Смежные вопросы