Добавляйте чаты точно так же, как вы добавляете видео с YouTube в свое веб-приложение.

Используя популярный сервер с открытым исходным кодом Rocket.Chat, вы можете добавить чат на свой веб-сайт или веб-приложение с минимальным кодом за несколько минут.

Этот метод известен как интеграция iframe.

Давайте углубимся.

Предоставление сервера Rocket.Chat

Существует множество способов, которыми вы можете подготовить сервер Rocket.Chat, чтобы использовать возможности добавления чатов в ваше веб-приложение. Я лично нашел установить его с помощью оснастки довольно быстро и легко. С помощью всего одной строки вы можете установить и начать использовать сервер Rocket.Chat на Ubuntu.

sudo snap install rocketchat-server

Перейдите к http://localhost:3000 и настройте Rocket.Chat.

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

Аутентификация пользователя для комнаты чата

После завершения настройки сервера Rocket.Chat вам необходимо установить конечную точку API URL и конечную точку iframe URL в администрировании учетных записях iframe для автоматической аутентификации пользователя на сервере Rocket.Chat, когда этот пользователь входит в ваше веб-приложение.

После настройки раздела iframe ваше веб-приложение должно обработать настроенную конечную точку URL-адреса API, чтобы вернуть loginToken на сервер Rocket.Chat. Это аутентифицирует пользователя, регистрируя этого пользователя через API входа Rocket.Chat, и позволяет Rocket.Chat установить личность пользователя.

Документы Аутентификация iframe объясняют термины и концепции аутентификации iframe, если вы хотите копнуть глубже. Вы также можете попробовать Пример аутентификации iFrame, поскольку он действительно помог мне, когда я впервые экспериментировал с интеграцией аутентификации iframe в своем веб-приложении.

Чаты с быстрой загрузкой?

Прежде чем встроить комнаты чата в свое веб-приложение, в x-frame-options необходимо указать домен веб-приложения, ограничивающий Rocket.Chat для загрузки iframe. только в указанном веб-приложении.

››› Примечание. Отключение параметра ограничить доступ внутри любого iframe является нарушением безопасности, которое позволяет загружать iframe в любом веб-приложении.

Вы можете перейти к администрированию › общим › ограничить доступ внутри любого iframe, чтобы установить параметры x-frame.

Теперь вы можете включить тег iframe в свой HTML-код, чтобы загрузить комнату чата.

<iframe
 src="http://localhost:3000/channel/general/?layout=embedded"
 title="myframe"
></iframe>

Здесь я использовал встроенный макет, так как он обеспечивает более упрощенный вид, скрывая левую боковую панель со списками каналов и кнопками управления учетными записями.

Теперь, когда в ваше веб-приложение добавлена ​​комната чата, для переключения между разными комнатами чата вы можете легко изменить src iframe, в который встроена комната чата. Но это приведет к повторному получению всего клиентского кода, а учитывая, что Rocket.Chat – это приложение, отображаемое на стороне клиента, это приведет к медленной загрузке чатов.

Я обнаружил способ, с помощью которого вы можете мгновенно переключаться между комнатами чата без какой-либо загрузки. Это включает в себя несколько изменений конфигурации в настройках интеграции iframe сервера Rocket.Chat, а затем, используя postMessage() в коде на стороне клиента, iframe contentWindow будет маршрут на стороне клиента в чат, что делает переключение мгновенным без какой-либо загрузки.

Чтобы внести изменения в конфигурацию, вам необходимо перейти к администрированию › общим › настройкам интеграции с iframe и установить >получить настройки источников в качестве домена вашего веб-приложения.

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

Например, если кто-то хочет переключиться на чат под названием «Вечерняя вечеринка», можно включить следующий код.

<div onClick={() => {
document.getElementsByTagName(“iframe”)[0].contentWindow.postMessage(
 { externalCommand: "go", path: "/channel/Evening-Party/?layout=embedded" },
 "http://localhost:3000"
 );
}}> Evening Party </div>

Иди попробуй!

Используя описанные выше три шага, мы можем легко добавить возможность чата в наши веб-приложения. Все благодаря Rocket.Chat.