Создание собственных RPC — функций

Создание функция заключается формирование объекта в определенном формате. Для работы RPC требуется, чтобы каждый объект находился в определенном пространстве имен, например в текущем проекте это — PN.  

Например, нам требуется создать собственный объект, который позволит получить серверное время. Для этого нам нужно создать файл, который должен располагаться в папке ~/modules/custom-context. Пусть это будет shell.js

Информация, которая находиться в файле shell.js

/** 
* объект для формирования ответа 
*/ 
var result_layout = require('mobnius-pg-dbcontext/modules/result-layout'); // (1) 
  
/** 
* Объект с набором RPC функций 
*/ 
exports.shell = function (session) { // (2) 
  
    return { // (3) 
     isLocal: true, // нужно указывать, иначе безопасность при создании meta не пропустит (4) 
 
        /** 
         * Получение серверного времени 
         * @param {*} data  
         * @param {*} callback  
         * @example 
         * // никаких параметров не нужно передавать 
         * PN.shell.getServerTime({}, function(){}) 
         */ 
        getServerTime: function (data, callback) { // (5) 
            callback(result_layout.ok([new Date()])); // (6) 
        } 
    } 
} 

Где, result_layout (1) — специальный объект, который позволяет возвращать данным в определенном формате. Подробнее тут https://docs.appcode.pw/docs?project=mobnius-pg-dbcontext&file=modules/result-layout.js

Наш файл экспортирует (2) один объект shell, который должен являться функцией. Данная функция принимает объект session, к которой храниться информация пользователе. 

Функция обязана вернуть объект (3) в котором должно быть свойство isLocal (4) со значением true. Отсутствие этого свойства со значение приведет к том, что функция будет не доступна для обработки.  

Внутри этого же объекта объявляем наши функцию getServerTime (5) которая работает асинхронно. Данная функция принимает на вход два параметра: 

  • data: any — входные параметры запроса 
  • callback: ()=>void — функция обратного вызова. Вызывается при возвращении результата. 

В функцию callback передается объект, который примет клиентское приложение. (6) Передаваемое значение должно быть указано как массив (это обязательно). 

После создания данного файла, требуется зарегистрировать его. Для этого нужно перейти в файл ~/modules/rpc/index.js и найти строчки кода типа:

context.push(...);

Сюда и требуется передать наш RPC-объект. 

context.push(require(‘../costom-context/shell’));
Print Friendly, PDF & Email

Добавить комментарий