This package has been deprecated

    Author message:

    package is not maintained

    teleport-server

    0.6.6 • Public • Published

    TeleportServer

    npm install teleport-server --save
    

    TeleportClient

    Это RPC сервер, умеет:
    • Авторизовывать клиентов.
    • Сообщать клиенту о именах телепортируемых объектов, их методах, типах выбрасываемых событий.
    • Сообщать подключенным клиентам о выбрасываемых объектами событиях.
    • Выполнять на сервере вызванные клиентом методы и возвращать результат.
    Особенности:
    • Работает только с объектами.
    • Работает только с асинхронными методами объктов, принимающими неограниченное количество аргументов и callback.
    • Методы телепортируемых объектов могут возвращать в callback неограниченное количество аргументов.
    • Выбрасываемые объектами события могут содержать неограниченное количество аргументов.
    • Все аргументы передаваемые на сервер и результаты возвращаемые на клиента проходят через JSON.stringify -> JSON.parse.
    • Авторизация обязательно, я серьезно, передавайте в качестве авторизационных данных хотя бы имя проекта,
      не стреляйте себе в ногу лишний раз.
    • Указывать время по истечении которого клиент считается безвозвратно отключенным обязательно,
      по истечении этого времени очищается буфер выброшенных телепортируемыми объектами событий и невозвращенных результатов вызванных этим клиентом методов.
    Кил фича:

    Если соединение с сервером кратковременно оборвется, то:

    • Клиент получит все выброшенные телепортированными объектами события за время отсутствия соединения.
    • Если клиентом был вызван некоторый метод до обрыва соединения,
      то после переподключения он получит результат этого вызова.
    • Если клиент вызовет метод телепортированного объекта во время отсутствия соединения,
      то он будет вызван когда соединение восстановится.
    Example:
    var teleportServer = new TeleportServer({
        port: 8000,
        peerDisconnectedTimeout: 10*60*1000,
        objects: {
            'logBox': {
                object: logBox,
                methods: ['getDateBounds', 'getLogs'],
            },
            'ipBox': {
                object: ipBox,
                events: ['newIps']
            },
            'blackBox': {
                object: rainbowBox,
                methods: ['getColor'],
                events: ['newColor']
            }
        },
        authFunc: function(authData, callback) {
            callback(null, authData === 'example project');
        }
    });
    Параметры принимаемые конструктором:
    • port - порт на котором core сервер будет ожидать подключений клиентов.

    • peerDisconnectedTimeout - время ожидания переподключения клиента в миллисекундах, если это время истекает,
      то все накопленные для потерянного клиента данные очищаются.

    • objects - объект где:

      • имя поля (logBox, ipBox, blackBox) - это имя под которым телепортированные объект получат клиенты.
      • object - сслыка на передаваемый объект.
      • events - массив событий разрешенных к передаче клиентам. Если указанно true, то будет переданны все события.
      • methods - массив методов разрешенных для вызова клиентами.
    • authFunc - функция авторизующая подключаемых клиентов.

    Публичные методы:
    • destroy - метод прекращающий работу объекта.
    State events:

    Эти события отражают текущее состояние TeleportServer.

    • ready - оповещение о том, что сервер готов к подключению клиентов.
    • destroyed - объект сервера разрушен, подписки на события серверных объектов сняты, все соединения с клиентами закрыты.
    • alreadyDestroyed - ранее метод destroyed уже вызывался.
    • error - оповещение о ошибках socket.io сервера.
    Client events:

    Эти события выбрасываются при подключении\переподключении\истечении времени ожидания переподключения клиентов.
    Выбрасываемый аргумент - id клиента.

    • clientConnection - подключился новый клиент.
    • clientReconnection - клиент переподключился после дисконекта.
      Все данные подготовленные к отправке для него будут отправленны, все накопленные клиентом команды будут приняты.
    • clientDisconnectedTimeout - истекло время ожидания переподключения клиента.
      Все данные для него подготовленные будут очищенны, если клиент все таки переподключется ему придется регистрироваться на серере заново.
    • clientDisconnection - клиент отключился, возможно он еще переподключится.
    How to debug:

    DEBUG=TeleportServer* npm test

    Запоздалый ChangeLog:
    • 0.6.5 - теперь callback принимает неограниченное количество аргументов.

    Keywords

    Install

    npm i teleport-server

    DownloadsWeekly Downloads

    35

    Version

    0.6.6

    License

    MIT

    Last publish

    Collaborators

    • nskazki