Это руководство проведет вас через очень краткий проект «Hello World», который покажет вам, как отправлять и получать данные из службы Diffusion Cloud с помощью Diffusion JavaScript SDK.

Вы можете посмотреть видеоверсию этого урока на YouTube.

Требования

  • Сервис Diffusion Cloud версии 6.5.0 или выше.
  • Node.js v12
  • npm v6
  • Веб-браузер, поддерживаемый Diffusion

Настроить облачный сервис

Если вы еще этого не сделали, зарегистрируйтесь в Diffusion Cloud.

Создайте облачный сервис 6.5.

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

На панели инструментов вашего сервиса щелкните Безопасность на левой панели.

В разделе «Анонимные сеансы» щелкните значок гаечного ключа.

Убедитесь, что выбрано РАЗРЕШИТЬ, затем нажмите ОТПРАВИТЬ.

Теперь ваша служба позволяет анонимным сеансам подключаться к предварительно настроенной роли КЛИЕНТА. Роль предоставляет ограниченные разрешения, поэтому анонимный сеанс может читать темы, но не изменять их.

Используйте продюсера для публикации тем

Вы можете клонировать полный код этого руководства из этого репозитория Github.

git clone https://github.com/pushtechnology/diffusion-cloud-hello-world

В каталоге установки используйте npm для установки зависимостей:
npm install

Теперь давайте посмотрим на Producer.js. Темы публикуются в вашем сервисе Diffusion Cloud. Он написан с помощью Diffusion JavaScript SDK.

#!/usr/bin/env node
const diffusion = require('diffusion');
const args = process.argv.slice(2);
if (args.length < 5) { 
  console.error(`wrong # args, try ${process.argv[1]} host principal credentials topic-path topic-value`); 
  process.exit(1); 
} 
const [host, principal, credentials, topicPath, topicValue] = args;
diffusion.connect({
 host,
 principal,
 credentials, 
}).then(session => {
  const stringType = diffusion.datatypes.string();
  const stringTopicSpec = new diffusion.topics.TopicSpecification(diffusion.topics.TopicType.STRING);
return session.topicUpdate.set(topicPath, stringType, topicValue, {specification: stringTopicSpec})
}).then(() => {
process.exit(0);
}).catch(error => {
console.error(`Cannot set ${topicPath} on ${host}: ${error}`);
process.exit(1);
})

Производитель устанавливает сеанс распространения, а затем публикует значение для пути темы по вашему выбору.

Запустите продюсер с помощью npm, заменив ‹HOSTNAME› ‹PRINCIPAL› и ‹PASSWORD› на значения для вашего сервиса:

npm run pub -- <HOSTNAME> <PRINCIPAL> <PASSWORD> my/topic 'Hello world'

Например:

npm run pub -- youcorp-service.eu.diffusion.cloud admin password my/topic 'Hello world'

Чтобы найти ‹HOSTNAME›, перейдите на вкладку «Обзор» на панели инструментов (в разделе «Хост :)».

Для ‹PRINCIPAL› и ‹PASSWORD› вы можете использовать принципала администратора, созданного вами при первой настройке службы. Вы также можете проверить доступные системные принципы на вкладке «Безопасность» на панели инструментов. Используйте участника с ролью ADMIN или TOPIC_CONTROL.

Вы можете убедиться, что ваша тема была создана правильно, перейдя в КОНСОЛЬ ›Темы в облачном сервисе.

Попробуйте запустить производителя с другим значением для той же темы:

npm run pub -- <HOSTNAME> <PRINCIPAL> <PASSWORD> my/topic 'Hola mundo'

Посмотрите, как мгновенно обновляется ценность вашего облачного сервиса.

Используйте потребителя для подписки на темы

Потребитель будет подключаться анонимно и подписываться на темы. Он встроен в веб-страницу по адресу public/index.html.

Измените строку 18 public/index.html, чтобы использовать имя хоста вашей службы Diffusion Cloud.

Теперь посмотрим на consumer.js:

const open = require('open');
const express = require('express');
const app = express();
app.use('/node_modules', express.static('node_modules'));
app.use(express.static('public'));
const listener = app.listen(0, () => {
    const URL = `http://localhost:${listener.address().port}`;
    open(URL).then(() => {
        console.log(`Opened browser for ${URL}`);
    }).catch(error => {
        console.log(`Cannot open ${URL}: ${error}`);
    });
})

Запустите потребителя с помощью:

npm run sub

Браузер открывается и отображает вашу тему.

Попробуйте изменить значение вместе с производителем, чтобы изменение мгновенно отразилось на странице.

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

Вот несколько идей для дальнейших экспериментов…

  • Войдите в консоль Diffusion Cloud как администратор и просмотрите созданную тему, измените ее значение и проследите за изменением, доставленным потребителю.
  • Привлекайте больше потребителей - посмотрите, как всем им доставляется информация о ценностях темы. Если JavaScript не для вас, напишите потребителю, используя один из других наших SDK.
  • Запускайте больше производителей, доставляя данные по большему количеству тем.

Первоисточник: https://bit.ly/3otAdTO

Больше контента на plainenglish.io