Показаны сообщения с ярлыком server. Показать все сообщения
Показаны сообщения с ярлыком server. Показать все сообщения

вторник, 13 октября 2009 г.

Клиент для Google Wave в виде Java Web Application

Итак, я написал небольшой проект на Java, который представляет собой клиент к Google Wave, который, в свою очередь, вы можете расширить необходимыми вам возможностями. Визуально выглядит он не очень презентабельно (впрочем, а-ля Windows 3.11, почему бы и нет), поскольку веб-дизайнер из меня не очень хороший, однако абсолютно за весь исходный код я отвечаю головой :). Так, например, требующиеся для отображения CSS-стили при этом выглядят максимально понятно, а XHTML-структура максимально упрощена (не в ущерб стандартам) для того, чтобы настоящий дизайнер мог развернуться и сделать действительно красиво :).
sametimed в работе
Сайт, исходные коды, и war-пакет с текущим состоянием проекта находятся по адресу http://code.google.com/p/sametimed
Сейчас у меня нет под рукой общедоступного хостинга, чтобы я мог прямо вот так запустить проект и дать поиграться с ним не отходя от хабра, однако, я могу предложить вам видео (на vimeo), демонстирующее его основные возможности, что, думаю, тоже вполне ничего, а запустить проект вы сможете сами, благо подробные инструкции есть на сайте проекта, а развёрнутые пояснения и подробное описание работы (и руководство к расширению возможностей) — внутри…

Sametimed b0.1 Work Demonstration (HD) from Ulric Wilfred on Vimeo.

Установка
Для того, чтобы запустить этот клиент, нужно, по идее, четыре вещи:

Чуть более подробные инструкции как его запустить сам по себе или в виде рабочего проекта для Eclipse представлены на странице проекта. Здесь же я рассмотрю структуру кода и опишу как он действует (пока без что UML-диаграмм, извините, по мере возможности я их добавлю).
Общая концепция

Здесь под сочетанием «серверная сторона/часть» подразумевается не сервер wave-protocol, а серверная строна веб-приложения.
Поскольку в wave-protocol сейчас существует только консольный клиент, релизованный в виде jar-приложения, основной вопрос состоит в своевременной передаче информации с клиента на серверную часть и наоборот.
Посему стало необходимо ввести два понятия:
  • Команда: отправляется с клиента на сервер, требует «открыть волну», «добавить участника», «отменить действие», «сказать привет» и т.п., отправляется по действию пользователя.
  • Сообщение: отправляется с сервера на клиент, сообщает о том, что «кто-то пригласил в волну», «sonya ответила привет», «добавился участник», «произошла ошибка», отправляется при любом обновлении.

При этом, команду с клиента можно отправить сразу, сильно не задумываясь о нагрузке на сервер, а вот сообщения об обновлениях требуется отсылать только по факту происшествия. Однако, на клиенте находится javascript, который без сложных приспоcоблений не может осуществлять такие вещи. Здесь потребовался Reverse Ajax, вернее его реализация для Java — библиотека DWR (Direct Web Remoting), она позволяет вызывать функцию на клинете с сервера в тот момент, когда решит сервер, а не клиент. Их сайт рассказывает о всех возможностях, которые вовсе не ограничены данным применением, но для проекта, как я уже сказал, из всех возможностей я использовал только эту.
Команды и сообщения передаются в виде XML, а содержимое сообщений об обновлениях в виде JSON, засчёт чего в построении интерфейса участвует только Javascript (я использовал JQuery), а серверная сторона даже не задумывается о существовании UI.
(для серверной стороны в проекте есть интерфейс Renderer, реализация которого вызывается при необходимых обновлениях, но он предназначен как раз для случаев вроде консольного клиента)
Описание процесса, происходящего в текущей версии

При запуске клиента, вы видите страницу с полем для ввода юзернейма и единственной кнопкой. Wave-protocol сервер при этом должен быть запущен. При нажатии на кнопку введённый вами юзернейм передаётся в сервлет (GetClientViewServlet), который подключает вас «к волне», и возвращает всю структуру (модель) клиента в виде JSON. JQuery на клиентской стороне строит весь интерфейс вейвлета. Если вы нажмёте кнопку ещё раз, вы запросите ещё один вейвлет, при этом между собой они будут различаться по внутреннему ID (сгенерированному автоматически), указанному на синей полоске в скобках. По этому ID и сервер и клиент определяют, к какому клиенту относится команда и/или сообщение.
Одновременно с этим DWR начинает ожидать вестей об обновлениях, а вы в это время можете ввести любую из доступных команд в поле консоли и нажать «send». Например, создать волну командой «\new», открыть её командой «\open <id>» и что-нибудь сказать, набрав просто текст (как в скайпе). При нажатии на кнопку «send» отправляется POST-запрос к другому сервлету (CommandsReceiverServlet), который получает сгенерированную в виде XML команду и тут же её выполняет, передавая данные серверу wave-protocol.
Обновления в данный момент приходят с серверной стороны (и от сервера wave-protocol) в виде XML-сообщения (на клиентской стороне есть обработчик, который вызывается при получении новых сообщений), в котором содержится алиас изменившейся модели (например, «chat», «inbox», «userslist», «errors» или «editor») и её содержимое в виде JSON, которое тут же обрабатывается и обновляет соответствующую часть вейвлета.
Как видите, всё до невозможности просто.
Структура проекта и возможности для расширения
Java:
  • name.shamansir.sametimed.wave Все классы, лежащие «снаружи» и относящиеся к клиенту непосредственно; здесь находятся абстрактные классы AUpdatingWavelet и ADocumentsWavelet — определяющие структуру соответствующего типа вейвлетов (обновляющийся вейвлет и его расширение, вейвлет содержащий документы). Класс SimpleWavelet служит примером такой реализации. Класс WavesClient занимается обработкой команд и именно он возвращает модель содержащегося в нём вейвлета в GetClientViewServlet.
  • name.shamansir.sametimed.wave.messaging Все, что относится к командам и сообщениям. Идентификаторы команд/сообщений в CommandID/MessageTypeID, сами классы Command и UpdateMessage, сервлет-обработчик CommandsReceiverServlet.
  • name.shamansir.sametimed.wave.model Классы, описывающие модель вейвлета. Они содержат описание каждой суб-модели, вроде списка участников, чата или текстового документа. И ModelID, описывающий возможные модели с абстрактным классом AModel, конечно. Плюс, ModelFactory, фабрика моделей.
  • name.shamansir.sametimed.wave.model.base Значения моделей, вроде «набора строк чата», «набора блоков текста в документе», «списка доступных волн» и т.д. Именно в этих классах описывается преобразование в JSON.
  • name.shamansir.sametimed.wave.model.base.atom То, из чего состоят значения, если это необходимо для их структуры — «строка чата», «блок текста», «идентификатор волны»
  • name.shamansir.sametimed.wave.model.base.chat Вейвлет с функцией чата и клиент для него
  • name.shamansir.sametimed.wave.model.base.editor Вейвлет с поддержкой редактируемого документа, на данный момент не имплементирован, поэтому отключен
  • name.shamansir.sametimed.wave.render Классы, относящиеся к рендерингу Здесь находится тот самый класс JSUpdatesListener, который средствами DWR вызывает функцию обновления на клиенте.

Самый логичный способ расширения — имплементация класса ADocumentsWavelet или расширение класса WaveletWithChat. Поскольку, в наиболее вероятном случае, вы будете оперировать понятием «документ» (А чат или что-либо другое, как раз являются документами), то именно такой способ должен подойти вам лучше всего. Также вам понадобится задуматься о модели данного документа (создав соответсвующий тип, реализующий AModel, добавить id модели в тип ModelID и генерацию модели в ModelFactory).
Если документ не будет обрабатывать какие-либо новые команды, то этого достаточно — можно заменить в GetClientViewServlet возвращаемый вейвлет на ваш собственный и вуаля!.. Ах, да, ещё генерация UI на клиенте, но об этом ниже.
Если же необходимы свои собственные, предназначенные сугубо для него команды, то необходимо добавить соответствующие команды в тип CommandID. После этого нужно расширить класс WavesClient для поддержки вашего вейвлета и для того, чтобы он обрабатывал и передавал новые команды вейвлету независимо от предка. И, в этом случае, заменить в GetClientViewServlet реализацию WavesClient на вашу собственную. И снова вуаля! (снова, не учитывая UI)
Вам понадобится, конечно же, учесть пару тонкостей при написании обработки команд, но в общих чертах это весь необходимый процесс для расширения функциональности клиента.
Javascript
  • ui.js занимается генерацией интерфейса, для каждого блока модели есть собственный метод
  • command.js отправляет и генерирует команды, принимает сообщения об обновлениях, а также содержит обработчики для кнопок
  • ajax.js скрипт, который давно пора заменить на соответствующий метод jquery, но никак не доходят руки :). используется в command.js

Для того, чтобы добавить генерацию вашей модели, достаточно добавить строку, вызывающую ваш метод обработки в методы CreateClient и renderUpdate объекта ClientRenderer в ui.js и собственно написать этот метод. Всё остальное будет (должно) работать самостоятельно.
CSS
  • sametimed-plain.css ещё чуть более ужасный интерфейс чем цветной :)
  • sametimed-colored.css цветной, Windows 3.11-подобный интерфейс :).

Пока что стили, определяющие позиционирование и внешний вид (цветность) не разделены, хотя они разделяются комментариями в самих файлах. Думаю, я не буду этого менять.
Эпилог

Вышло много текста про один небольшой аппликейшн, но зато пост описывает все его возможности. Надеюсь найдётся не один человек, которому эта разработка будет интересна и если найдётся, планирую усовершенствовать его дальше. Пока это небольшая поделка «из интереса», но немного стараний — и её можно превратить в полноценный проект.
Тех, кто это будет тестировать, прошу постить баги в соответствующее место, в разумных пределах и не относящиеся к дизайну :).
Участие в разработке приветствуется но поощрить нечем, только лицензией :).

 

Взято: http://habrahabr.ru/blogs/google/72235/ by zokotuhaFly

суббота, 12 сентября 2009 г.

GUI для Волны

В одной из статей я описывал инсталляцию волнового демо-сервера FedOne. В «комплекте» к серверу имеется и клиент, с весьма примитивным текстовым интерфейсом. Я уверен, что у многих из тех, кто тестировал FedOne, возникала мысль о написании GUI-клиента к нему.

И вот Thomas Beverley выложил исходные тексты клиента FedOne с графическим пользовательским интерфейсом. На скриншоте вы можете посмотреть, как это все выглядит под Windows XP. Запущены сервер и два клиента.
Есть кнопки для практически всех команд, которые сейчас имеются в API (заготовлена даже пустая кнопка «Test butt», видимо, на будущее). В центре вы видите модальное окно для добавления нового участника в волну. Аналогичное окно появляется при удалении участника.

Процедура установки этой версии клиента проста. Нужно скачать исходные тексты и заменить ими папку\src\org\waveprotocol\wave\examples\fedone\waveclient\console. После этого запускаете «ant clean» (спасибо D.Unkovsky за напоминание :) и затем «ant» для перекомпиляции.
Как пишет автор, можно легко изменить клиент с помощью имеющегося класса WaveConnector.java. Этот класс полностью документирован и позволяет упростить взаимодействие с Google-волной. Базируясь на нем, вы можете построить свой собственный текстовый клиент или создать ваш вариант графического интерфейса. Как пример смотрите класс ConsoleClient.java.

P.S. И напоследок — небольшой трюк (Windows only), теперь уже от меня.
Раз уж мы говорим о графическом интерфейсе, давайте сделаем более удобным управление сервером и клиентами. Сейчас приходится запускать их с помощью bat-файлов, причем окна с запущенными процессами невозможно свернуть в трей.
Но мы можем воспользоваться удобной утилиткой LNK file improver by Dmitry Koteroff (dk@dklab.ru) из комплекта Denwer. Она позволяет запускать любую программу и сворачивать ее окно в трей. Если вы заглянете в текст этой маленькой (6656 байт) софтинки каким-нибудь редактором, то увидите, что прямо в исходном тексте можно отредактировать ее параметры: стартовый каталог, строку запуска с аргументами, адрес иконки, нужно ли запускать свернутой в трей, позволять ли запуск нескольких экземпляров и делать ли доступным пункт «Terminate» в контекстном меню (по правой кнопке) этой крохотули.
Единственно, что надо соблюдать при изменении текста — делать замену знаков, а не вставку.
Я сделал себе три разновидности этого исполняемого файла (сервер и два клиента), добавил иконку от Google Wave и теперь у меня на экране не висит несколько DOS-образных окон, а есть лишь пара-тройка волновых «змеек» в трее (их видно в правом нижнем углу скриншота).

Источник: Вадим Барсуков

пятница, 7 августа 2009 г.

PyGoWave Server — первый альтернативный Wave-сервер




В «очень раннем режиме», но все-таки заработал первый альтернативный Wave-сервер. Можно зарегистрироваться, создавать волны, добавлять в них других пользователей, совместно использовать гаджеты (причем можно создавать свои и делать их доступными другим). Хочется надеяться, в ближайшее время появятся и другие функции. У разработчиков есть блог. Вы также можете попробовать поставить такой сервер к себе — исходники открыты (Python, Django).

Внимание! Для использования входите через Google Chrome, через Firefox — работает не всё.

Рекомендую включить гаджет Simple Chat — это чат где сообщения появляются по мере набора.

Источник: HabraHabr

воскресенье, 2 августа 2009 г.

Установка сервера Google Wave (FedOne) на локальной машине под Windows

Захотелось мне попробовать Google Wave Federation Prototype Server (FedOne) и решил я установить его на свой ноутбук под управлением Windows XP SP2.

Зачем? Ну, у меня уже был опыт комфортной разработки сайтов на своем «локальном интернете» (пакет Denwer включает Apache, PHP, MySQl и т.д.). Почему бы не поработать таким же образом с локальным волновым сервером, подумал я?
Сказано-сделано и вот, что у меня получилось. На все про все ушло часа три, причем большую часть этого времени занимала возня с установкой дополнительного программного обеспечения.

Процедура установки волнового сервера подробно и с картинками описана по-английски. Есть также русский перевод этой инструкции (сделал Иво Димитров aka Darwin).
Но установка под Windows имеет некоторые особенности, о которых я и хочу написать.

A. Необходимое программное обеспечение


Сразу скажу, что для установки волнового сервера мне понадобилось скачать:

а1. исходные тексты FedOne.

Их можно посмотреть и получить здесь.

a1.1. Mercurial

Поскольку исходники хранятся в системе управления исходными кодами Mercurial, то для их скачивания мне пришлось установить программу-клиент TortoiseHg под Windows.
В настоящее время это версия 0.8.1. — TortoiseHg-0.8.1-hg-1.3.1.exe (14.4Mb)

После установки в контекстном меню виндовского Проводника появляется субменю TortoiseHg. Создайте папку у себя на диске, установите на нее курсор, нажмите правую кнопку мыши и объявите эту папку локальным репозиторием (хранилищем) исходных кодов. Затем синхронизируйте ее с онлайновым репозиторием кодов FedOne — в Repository Settings укажите онлайновый адрес http://code.google.com/p/wave-protocol/source и закачайте файлы. И, наконец, сделайте рабочую копию этих кодов. Для этого выберите пункт Clone Repository, укажите в какую папку выложить исходники.

а2. Openfire

Это кросс-платформенный сервер взаимодействия в реальном времени, основанный на протоколе XMPP (Jabber).
Для Windows в настоящее время есть версия 3.6.4.
Предлагается для загрузки два варианта, я выбрал тот, в который включена Java RE (openfire_3_6_4.exe, 20.9Mb). Но можно, наверное, скачать и более компактный (7.49Mb) архив без JRE (а Java установить отдельно на следующем этапе).

a3. OpenSSL

Он понадобится нам для создания сертификатов нашего сервера. Я взял Windows-версию OpenSSL. А именно Light версию (весит 1Mb, есть еще 7-мегабайтная версия для разработчиков софта, но для наших целей сейчас она излишня).

a3.1.Visual C++ 2008 Redistributables

При установке оно потребовало установить Visual C++ 2008 Redistributables, пришлось скачать и установить еще и этот пакет (1.7Mb). Для этого идем на сервер Microsoft.
Замечу, что после установки VCR и перезагрузки системы инсталлятор OpenSSL все равно ругался и уверял, что VСR в системе не установлен и без него он работать не будет. Но после нажатия «OK» прекрасно все установил и заработал.

a4. Java

JavaRE6 была у меня в системе вместе с Eclipse (возможно обновилась при установке OpenFire). Но при сборке исходных кодов Ant потребовал еще файл tools.jar (около 13Mb). Он, как выяснилось, приходит вместе с пакетом для разработчиков JavaJDK. Что ж, поставим и JavaJDK.

a4.1. JavaJDK

Актуальная на данный момент версия Java6 Update14 (75Mb) доступна для закачки. (Можно взять и тут).

a5. Java-утилита Ant для сборки

Я скачивал версию 1.7.1. (10Mb).

С Ant пришлось повозиться по той причине, что ему, как я писал выше, потребовался tools.jar. Кроме того, я работаю в Windows под аккаунтом «Вадим», написанным кириллицей. Соответственно и каталоги для этой учетной записи Windows делает с кириллическими (русскими) названиями. Ant при сборке считал эти пути ошибочными и никак не хотел собирать проект.
Решил эту проблему установкой «правильных» путей (без «крокозябр») в переменных ANT_HOME, JAVA_HOME и т.п. Кстати, в доках рекомендовано установить в config.sys такую строку для работы с длинными путями: shell=c:\command.com c:\ /p /e:32768
Переменные в Windows можно установить так: правой кнопкой мыши по иконке «Мой компьютер», выбираем «Свойства». Вкладка «Дополнительно», кнопка «Переменные среды».

B. Итак, теперь собственно об установке волнового сервера.


Весь процесс разбивается на четыре этапа:
b1. настройка и запуск XMPP-сервера OpenFire
b2. генерация сертификатов OpenSSL
b3. установка волнового расширения для OpenFire, т.е. собственно настройка вашей копии сервера FedOne и его сборка
b4. запуск сервера и клиента к нему

Пройдем этот путь:

b1. Установка и настройка сервера OpenFire

Настройка OpenFire, пожалуй, самая простая часть установки сервера. Запускаете инсталлятор и следуете указаниям инструкции. По-английски или по-русски.

Поэтому повторяться не буду, но для нашего случая есть две тонкости — а) в качестве домена своего XMPP-сервера укажите "localhost", b) запомните, как назвали субдомен, используемый вашим FedOne (я назвал его "wave"), и секретное слово (shared secret) к нему (в моем примере — "foobar"). Это нам понадобится при компиляции и запуске сервера.

b2. Генерация сертификатов

По-английски описано здесь.

Все элементарно, Ватсон. Идем в C:\OpenSSL\bin\ и запускаем openssl.exe с параметрами (см. ниже). Нужно будет ответить на несколько вопросов — код страны, название города и т.п. и получить в итоге 2 файла.

Можно сделать такой genss.bat-файл:
openssl genrsa 1024 | openssl pkcs8 -topk8 -nocrypt -out %1.key
openssl req -new -x509 -nodes -sha1 -days 365 -key %1.key -out %1.cert

и запускать его так: genssl.bat wave, где wave — имя для генерируемых файлов ключей и сертификата (wave.cert и wave.key).
Кладем сгенерированные файлы в каталог с исходниками волнового сервера.

b3. Компиляция сервера и клиента

Просто перейдите в папку с исходниками сервера и скажите: «ant». (Можно предварительно прогнать тест — «ant test»).
Если у вас правильно указаны переменные и пути, то после компиляции вы получите 2 файла (fedone-0.2.jar и fedone-client-0.2.jar) в папке /dist

b4. Запуск вашего сервера и клиента к нему

Волнующий момент. :) Сделайте 2 bat-файла, для запуска сервера run-server.bat и для запуска клиента run-client.bat.

run-server.bat:
java -jar dist/fedone-0.2.jar --client_frontend_hostname=127.0.0.1 --client_frontend_port=9876 --xmpp_component_name=wave --xmpp_server_hostname=localhost --xmpp_server_ip=localhost --xmpp_server_port=5275 --xmpp_server_secret "foobar" --xmpp_server_ping="" --certificate_private_key=wave.key --certificate_files=wave.cert --certificate_domain=localhost --waveserver_disable_verification=true


p.s. Несколько пояснений: вот и пригодились нам «localhost» (наш локальный домен), «wave» (имя расширения для OpenFire) и «foobar» (секретное слово).

run-client.bat:
java -jar dist/fedone-client-0.2.jar %1@localhost 127.0.0.1 9876


Запуск клиента: run-client.bat имя_пользователя, например: run-client.bat vadbars

Итак, все готово? Он сказал, «Поехали!»

Раз. Запускаем OpenFire. В трее — желтая лампочка.
Два. Запускаем run-server. Досовское окно с протоколом запуска. Посмотрите в сообщениях, что сервер нашел OpenFire и подключился к нему. Можно посмотреть это же в админке самого OpenFire (раздел «Extentions»).
Три. Запускаем run-client. Тоже черно-белое досовское окно с какими-то малопонятными значками. А вы чего ждали? :)

Можно полюбоваться на скриншоты.

C. Работа с волнами на своем сервере и со своим клиентом


В данный момент (август 2009 года) FedOne поддерживает всего несколько команд (да-да, пока нет никакого GUI!):

/connect user@domain server port Cоединиться с server:port как участник user@domain
/open entry open Открыть волну, которая есть у вас во Входящих. Надо указать номер волны (от 0). Например: /open 1
/new Создать и открыть новую волну
/add participantId Добавить участника к волне
/remove participantId Удалить участника из волны (хе-хе, этого пока нет в клиенте Gogoole Wave Sandbox! Наш сервер круче. :)
/quit Завершить работу клиента


Автор: Вадим Барсуков

суббота, 1 августа 2009 г.

Установка Google Wave Server (Прототип)

Введение

Установка исходного кода Google Wave Federation Prototype Server

Исходный код Wave Federation Prototype Server поставляется в виде Java приложения, что соответствует XEP-0114, и является Jabber Component Protocol (компонентом Jabber протокола). В примере ниже мы покажем, как установить Wave Federation Prototype Server как плагин к Openfire XMPP сервер, но он должен так же работать с любым XEP-0114 совместимом сервере.

Для запуска прототипа сервера нужно сначала установить Openfire сервер. Данная инструкция Openfire сервера описывает шаги для Debian (Ubuntu) систем и если у вас возникнут проблемы или вопросы относительно установки, То обращайтесь к Openfire сообществу на их сайте.



Предварительные сведения

Openfire и Wave Federation Prototype Server разоработаны на Java поэтому вы должны убедиться, что у вас установлена Java на вашей машине. Несмотря на то, что WFPS должен работать на любой системе с Java 6 эта инструкция описывает шаги только для Debian (Ubuntu) систем.


Mac OSX

Для Mac OSX установите Java 6 с http://developer.apple.com/java/download/.

После установки Java вам надо создать переменные окружения:

$ export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
$
export PATH=$JAVA_HOME/bin:$PATH

Теперь пройдите на сайт Openfire и скачайте Mac OSX версию Openfire.


Debian/Ubuntu

Установка Java 6:

$ apt-get install sun-java6-jre sun-java6-fonts

Теперь скачайте и установите Openfire сервер:

$ wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.6.4_all.deb
$ sudo dpkg
-i openfire_3.6.4_all.deb
$ sudo
/etc/init.d/openfire restart

Конфигурация Openfire (все платформы)

После установки Openfire сервера пройдите по ссылке http://localhost:9090 в вашем браузере. Замените домен на ваш, если вы устанавливаете не на локальный компьютер. Весь процесс установки будет происходить через мастер и будем ставить значения по умолчанию для простоты.

Конфигурация Openfire Wave плагина

Перезапустите сервер после окончания настройки. На Debian/Ubuntu это делается так:

$ sudo /etc/init.d/openfire/restart

После того, как перезапустите сервер войдите в Openfire как 'admin' и пароль, который вы указали.

Затем идём в Server -> Server Settings -> External Components.

Включите внешние дополнения на порту 5275 и выберите секретное слово для расшаривания этого компонента. Нажмите Сохранить. Теперь добавьте 'wave' как доверительный компонент. Для этого пишем субдомен 'wave' и напишите опять секретное слово, которое вы написали до этого. Номер порта и секретное слово служат для возможности подключения Wave дополнения.

Теперь идём в Server -> Server Settings -> Security Settings. Для "Server Connection Security" выбираем "Custom" и включаем "Server Dialback". Так же проверьте, что флажок "Accept self-signed certificates" установлен.

Защита

Следующие изменения не являются обязательными, но если вам нужна хорошая защита, то это будет хорошей практикой.

  • Идём в Server -> Server Settings -> Registration and Login. Выключим "Inband Account Registration". Выключим "Change Password". Выключим "Anonymous Login"
  • Включим компресию в "Compression Settings"
  • Выключим прокси в "File Transfer Settings"

Установка дополнения Wave

Теперь скачиваем Federation Prototype Server и извлекаем всё содержимое. Скачать можно с SVN

Для запуска расширения вам будут нужны некоторые из параметров, который вы использовали для настройки Openfire сервера. Это номер порта, секретное слово, имя сервера и, наконец, имя компонента, которое у нас - 'wave'.

Wave сервер требует ряда сертификатов, используемых для подписания. Дополнительную информацию см. на странице Wiki.(прим. переводчика: Чуть позже сделаю перевод, как создавать сертификаты)

Отредактируйте run-server.sh скрипт с правильными настройками. Расшифровка аргументов:

ПараметрОписание
client_frontend_hostnameip к которому будет подключаться клиент
client_frontend_portпорт к которому будет подключаться клиент
xmpp_server_hostnameXMPP сервер хост (например gogola.org)
xmpp_component_nameXMPP компонент Wave сервера. В нашем случае "wave"
xmpp_server_ipАдрес XMPP сервера, где у нас wave компонент
xmpp_server_portПорт XMPP сервера, где опять таки, наш компонент
xmpp_server_secretСекретно лово компонента
xmpp_server_pingПинговать сервер после подключения? Если пусто, то пинговать не будет
certificate_domainДомен сертификата который мы использовали при его создании
certificate_filesфайл сертификата. (yfghbvth username.cert)
certificate_private_keyПриватный ключ сертификата (PKCS#8-PEM) (например username.key)
waveserver_disable_verificationПроверять сертификат? true - да, flase - нет

После того, как вы отредактируете скрипт сервера вам надо будет скомпилировать сервер и запустить его:


$ ant dist
$ run
-server.sh

Запуск клиента

Отредактируйте run-client.sh скрипт (смотри параметры внутри скрипта), затем запустите его:

$ run-client.sh <username>