[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подключение web-app со стороннего сайта
AllesKlar
Всем бобра.

Введение:
Имеется этакое типа web-app и клиенты (здесь и далее "клиент" - это экономическое значение слова, а не техническое) его пользуют.
Выглядит это пока что так:

user posted image

На нашем сервере расположено само приложение (APP), а так же для каждого клиента его директория, где лежат его конфиги и опционально индивидуальные темплейты и яваскрипты.

Обращение к клиентскому приложению такое: http://site.com/client_1
Конфиги прочитало, ядро АРР подгрузило, в браузер выдало.

У некоторых клиентов есть свои сайты и они хотят видеть APP-у на нем (не размещать физически).
Пока что это реализовано iframe-ом

iframe как и goto - стыд, позор и вечная головная боль разработчика :)
Хочется от него избавится.
file_get_contents() и прочие php-шные приблуды не подходят, т.к. внешний интерфейс клиента - это максимум дизайнер, разбирающийся в css, html и немножечко в женщинах.

Пока что идея что-то типа:
клиент размещает у себя
<script src='http://site.com/client_1/connector.js'></script>
<div
id='app_wrap'></div>

И яваскриптом подкачиваем весь контент с нашего сервера.
Какие особенности могут подстерегать:
- переписать все аяксовские вызовы на JSONP
- ввести namespace для всех id, классов, переменных, функций в html, css, javascript

Это то, что уже придумалось.
Наверняка будут грабли и хотелось бы ими как можно меньше по лбу получить.

Собственно вопрос:
реализовывал ли кто-нибудь подобное? Какие проблемы могут возникнуть в предложенном мной варианте? Может есть другая идея?

_____________
[продано копирайтерам]
sergeiss
Я ничего такого не реализовывал, но....

Цитата (AllesKlar @ 14.11.2015 - 05:22)
iframe как и goto - стыд, позор и вечная головная боль разработчика smile.gif

Не вижу проблем в использовании iframe. Назови хотя бы одну причину, почему это "стыд, позор и вечная головная боль".

Цитата (AllesKlar @ 14.11.2015 - 05:22)
Какие проблемы могут возникнуть в предложенном мной варианте?

Клиент может захотеть реализации специфического дизайна для именно своего сайта. Вы готовы делать специфический софт для каждого клиента?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
killer8080
header('Access-Control-Allow-Origin: *');
AllesKlar
Цитата (sergeiss @ 14.11.2015 - 03:22)
Вы готовы делать специфический софт для каждого клиента?

Конечно.
В схеме написано же, индивидуальные темплейты и даже индивидуальные яваскрипты. У клиента доступ в свой каталог темплейтов на нашем сервере полный.

И даже специфический контроллер доступен, который работает, как расширение стандартного smile.gif
В общем, АППа по мотивам вот этого:
http://phpforum.su/index.php?showtopic=78814

Цитата
Назови хотя бы одну причину, почему это "стыд, позор и вечная головная боль".

Достаточно того, что нет доступа из яваскрипта к родительскому окну.
Это нужно для перехода по страницам клиента.
Т.е. у АППы есть несколько страниц, и под каждую страницу клиент хочет свою страницу на своем сайте.
А в iframe оно все крутится в коробочке.
Далее, при изминении пользовательского дизайна, нужно лезть в код клиентского сайта, чтобы менять размеры окна iframe. А, т.к. на разных шагах у АППы разный размер, то iframe выглядит в итоге ужасно.

killer8080
псиб, учтемс

_____________
[продано копирайтерам]
sergeiss
Цитата (AllesKlar @ 14.11.2015 - 12:51)
Достаточно того, что нет доступа из яваскрипта к родительскому окну.

Извини, но если ты не знаешь о наличии техниологий и/или "не умеешь их готовить", то это не значит, что этого нет wink.gif

Пруф-линк: https://learn.javascript.ru/cross-window-me...ith-postmessage "...Интерфейс postMessage позволяет общаться друг с другом окнам и ифреймам с разных доменов...."

PS. Ну или вот тебе более официальный сайт: https://developer.mozilla.org/en-US/docs/We...dow/postMessage

Лично я бы лучше развил использование айфрейма. Это позволит унифицировать всё, создать более гибкую, универсальную систему.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
AllesKlar
sergeiss
Цитата
Получатель: событие onmessage
Чтобы получить сообщение, окно должно поставить обработчик на событие onmessage.

Этого достаточно, чтобы не использовать.

Мы не можем отвечать за код, размещенный на сайте клиента.
Клиент же должен писать там обработчик.
А потом нам в суппорт будут сыпаться тикеты: нифига не работает / работает не так.
Мы, конечно же, найдем багу у клиента, покажем ему, и это будет бесплатно.
А потом шеф уволит отдел разработки, т.к. он весь превратится в перманентный суппорт smile.gif

Подключение должно быть очень простым.
Как гугло-карта.

Ты мыслишь как разработчик, а надо, как говно-менеджер (С) smile.gif
Клиент - это предприниматель, ему кто-то когда-то написал сайт, сайт работает.
Теперь он покупает наш модуль и нужно его малой кровью интегрировать в сайт.
Если ему придется дополнительно кому-то (пусть даже нам) платить еще за установку модуля (т.е. за написание хендлеров к нашему iframe) он нас пошлет в Ж smile.gif

Не, с iframe систематически вылазиют разные неудобства, и было четкое указание: похерить его к чертям smile.gif

_____________
[продано копирайтерам]
vagrand
Не знаю деталей вашей апп, но почему бы не сделать при помощи удалённых js файлов, которые бы грузились динамически, генерились при помощи php и после своей загрузки выполнять ли бы какой-то js код уже на сайте клиента?

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
AllesKlar
Цитата (vagrand @ 14.11.2015 - 15:23)
Не знаю деталей вашей апп, но почему бы не сделать при помощи удалённых js файлов, которые бы грузились динамически, генерились при помощи php и после своей загрузки выполнять ли бы какой-то js код уже на сайте клиента?

О! Интересная тема, надо подумать.


_____________
[продано копирайтерам]
icedfox
AllesKlar, не пробовали смотреть в сторону CNAME ?
Есть ваш УРЛ : http://site.com/client_1
Есть свой сайт у клиента : http://megasite.com/

Клиент на хостинге или у регистратора прописывает CNAME в ДНС записях до вашего сайта например:
megasite.com. CNAME site.com/client_1.

или для поддомена (http://toptop.megasite.com/ )
toptop CNAME site.com/client_1.


Обратите внимание на точки, забыв их, вы будете долго искать, почему не работает.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.