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 принимает неограниченное количество аргументов.

Dependents (0)

Package Sidebar

Install

npm i teleport-server

Weekly Downloads

1

Version

0.6.6

License

MIT

Last publish

Collaborators

  • nskazki