Ausführen von Converse.js in Verbindung mit Bosh Punjab unter Apache 2.4 und einem Remote-Openfire-Server, oder wie Sie eine Jabber-Seite im Lieferumfang enthalten

Ich habe mich entschieden, diesen Artikel zu schreiben, da ich keine Beschreibung der Probleme finden konnte, auf die ich bei der Installation und Konfiguration von allem gestoßen bin, was in der Kopfzeile des russischsprachigen Internets beschrieben ist. Formal gibt es einen Artikel über Punjab auf Habré, aber zu meinem Bedauern hat es mir nicht viel geholfen. Der Artikel richtet sich an Personen, die mit den Tricks der Administration, Pyton usw. nicht sehr vertraut sind. usw.

Also fangen wir an. Mein System ist ein Server unter Ubuntu 14.04, auf dem Apache 2.4 ausgeführt wird. Er hostet eine Seite, auf der der Jabber-Client fixiert werden sollte. Die Wahl der Kunden fiel auf Converse.js, da es eine minimale Anzahl von Einstellungen erfordert und sofort einsatzbereit ist. Jabber Server - Openfire. Es befindet sich auf einem entfernten Rechner im Netzwerk, auf den ich nur als normaler Benutzer Zugriff habe. Mir waren nur die IP-Adresse und der Port bekannt.

Für JS-Jabber (selbst geschrieben, Strophe, Converse) benötigen Sie einen BOSH- Server. Grob gesagt handelt es sich um einen Echoserver, der Nachrichten von JS-Jabbera an den Jabber-Server weiterleitet und umgekehrt. Punjab wurde als BOSH genommen .

Mit dem einleitenden Teil fertig - ging zum Set.

Punjab


Es erfordert: Python 2.6> =, Twisted 11.1> = . Für Ubuntu enthält das Repository ein Python-Twisted-Paket. Wenn Sie TLS verwenden möchten, benötigen Sie das Paket pyopenssl.
Unser Server funktioniert ohne Verschlüsselung, daher habe ich dieses Paket nicht installiert.
Als nächstes treibe es entweder auf GitHub oder lade das Archiv herunter und entpacke Punjab. Wir platzieren es wo wir wollen, zum Beispiel / usr / share / punjab. Führen Sie in diesem Ordner der Konsole Folgendes aus:

python setup.py install

Ferner wird gemäß der Beschreibung der Autoren vorgeschlagen, den Server sofort zu starten. Ich empfehle die punjab.tac Datei zu beachten.
Es hat eine Zeile wie diese:

 internet.TCPServer(5280, site).setServiceParent(application)

Ich habe keine anderen Einstellungen für den Port des Remote-Servers gefunden, und da unser Server auf Port 5222 ausgeführt wird, habe ich diesen von 5280 auf 5222 ersetzt:

internet.TCPServer(5222, site).setServiceParent(application)

У вас может возникнуть вопрос: «А где писать адрес jabber-сервера?». В конфигурации нигде. Адрес сервера указывается уже в клиенте в виде записи: vasyliy_pupkin@192.168.1.18, где 192.168.1.18 — адрес jabber-сервера.

Запускаем Punjab через консоль:

twistd -y punjab.tac

Если всё прошло нормально, консоль проглотит эту строку, а в папке punjab появится файл twistd.log, в котором можно посмотреть, как там поживает наш BOSH-сервер.

Тонкий момент: если в логе появляются записи о DNS, вам нужно дописать в punjab.tac сразу после строки:

bosh = HttpbService(1)
следующий код:
bosh.connect_srv = False 

Проверяем работу:

.http://адрес_сервера: порт_punjab/ покажет сообщение вида: A XEP-0124 — BOSH — component manager.
.http://адрес_сервера: порт_punjab/http-bind сообщение вида: XEP-0124 — BOSH

Apache 2.4


Ich gehe davon aus, dass Sie Apache haben. Wir müssen die Proxy-Module, proxy_http, aktivieren. Es ist durch einen einfachen Befehl a2enmod proxy proxy_http enthalten.

Wir gehen zu apache2.conf und fügen es dort hinzu:


    ProxyRequests Off
    ProxyPass /http-bind http://localhost:5222/http-bind
    ProxyPassReverse /http-bind http://localhost:5222/http-bind

Ich möchte Sie daran erinnern, dass ich Port 5222 besitze.
Warum wird das benötigt ? Der Browser kann kein Paket an den Port senden, nur an die Adresse. Deshalb ersetzen wir den Port durch eine Adresse.

Converse.js


Wir legen die Dateien aus dem Converse-Archiv in den Ordner der Apache-Website und öffnen die Datei index.html zur Bearbeitung. Ganz am Ende der Datei finden wir ein Fragment des JS-Codes:

 converse.initialize({
            bosh_service_url: 'https://conversejs.org/http-bind/', // Please use this connection manager only for testing purposes
            i18n: locales['en'], // Refer to ./locale/locales.js to see which locales are supported
            keepalive: true,
            message_carbons: true,
            play_sounds: true,
            roster_groups: true,
            show_controlbox_by_default: true,
            xhr_user_search: false
        });

Geben Sie in diesem Code die gewünschte bosh_service_url und die gewünschten Ländereinstellungen an.

Speichern, öffnen Sie die Demoseite im Browser. Darauf geben wir unsere Zugangsdaten im Anmeldeformular in der Form: "Jabber_Id @ jabber_server" und Passwort an.

Wenn alles reibungslos gelaufen ist, sehen Sie Ihre Kontaktliste.

Jetzt auch beliebt: