Skip to main content

01. Создание приложения

Создание проекта

Хост morpcluster запускается под nodejs 16. Рекомендуется установленный git Некоторые сервисы потребуют наличие PostgreSql.

Вначале, нужно создать package.json, наример :

{
  "name": "mcl-test",
  "version": "1.0.0",
  "main": "src/index.js",
  "scripts": {
    "start": "node src/index.js"
  },
  "type": "module",
  "dependencies": {
    "@morphcluster/core": "file:./corelibs/core"
  }
}

Для подключения основного пакета можно использовать репозиторий через git submodule, в котором они распространяются

git init
git submodule add https://git.cara.bi/morphcluster/corelibs.git ./corelibs/
npm install 

Hello world

Hello world может выглядить вот так:

src/index.js

import {ServiceHost,Config,Logger} from '@morphcluster/core'
import HelloWorld from './hello.js'
let host = null

async function main() {
  try {
    host = new ServiceHost("TestHost")
    host.Logger = new Logger()
    host.addService(new HelloWorld())
    await host.start();
    console.log('***All Services Started***')
  } catch(e) {
    console.error('Failed to start',e)
    process.exit(1)
  }
}

main().then(()=>{})

src/hello.js

import {ComplexError, Service} from "@morphcluster/core"

export default class HelloWorld extends Service {

    constructor() {
        super()
        this.addRequest({ name : 'hello', http: "GET", anonymous: true })
    }

    async hello(request, workspace, log) {
        console.log("Hello "+workspace+" World",request)
        return {result:"Hello result"}
    }

    async start() {
        await super.start()
        console.log("My service Started")
    }

}

В этом файле, описан сервис HelloWorld, который поддерживает запрос hello.

  • request - параметры, подаваемые в ваш запрос (и сессия)
  • workspace - имя рабочего пространства, внутри которого он вызван
  • log - экземпляр цепочки лога, создается вызываемым сервисом
  • возвращаемое значение будет результатом запроса

Как вызвать запрос сервиса будет описано дальше.

Можно попробовать запустить хост командой npm start В случае успеха будет выведено:

My service Started
HelloWorld: started.
***All Services Started***