This package has been deprecated

Author message:

package is not maintained

teleport-client

0.6.18 • Public • Published

TeleportClient

TeleportServer

npm install teleport-client --save
bower install teleport-client --save
Это RPC клиент, умеет:
  • Подлючаться и авторизовываться на сервере.
  • Получать от сервера список телепортируемых объектов, имена их методов и событий.
  • Генерировать на основе полученного списка соответствующие объекты и методы.
  • Выбрасывать события серверных объектов из сгенирированных.
  • Работает в браузере и под управлением node.js
Особенности:
  • Работает только с объектами.
  • Работает только с асинхронными методоми телепортируемых объектов, принимающими неограниченное количество аргументов и callback.
  • Методы телепортируемых объектов могут возвращать в callback неограниченное количество аргументов.
  • Если на клиенте не передать callback, на сервере все равно callback будет сгенерирован и передан в соотвествующий метод последним аргументом.
  • Выбрасываемые телепортированными объектами события могут содержать неограниченное количество аргументов.
  • Все аргументы передоваемые на сервер и результаты возвращаемые на клиента проходят через JSON.stringify -> JSON.parse.
  • Авторизация обязательно, я серьезно, передавайте в качестве авторизационных данных хотя бы имя проекта, не стреляйте себе в ногу лишний раз.
  • Указывать интервалы попыток переподключения обязательно.
Кил фича:

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

  • Клиент получит все выброшенные телепортированными объектами события за время отсутствия соединения.
  • Если клиентом был вызван некоторый метод до обрыва соединения,
    то после переподключения он получит результат этого вызова.
  • Если клиент вызовет метод телепортированного объекта во время отсутствия соединения,
    то он будет вызван когда соединение восстановится.
Подключение:
  • browserify, node.js:
var TeleportClient = require('teleport-client');
 
var teleportClient = new TeleportClient({
    serverAddress: "ws://localhost:8000",
    autoReconnect: 3000,
    authFunc: function(callback) {
        callback(null, 'example project');
    }
});
  • classic style:
    ...
    <script type="text/javascript" src="https://rawgit.com/nskazki/web-TeleportClient/master/dist/TeleportClient.js"></script> 
</head>
<body>
    <script type="text/javascript">
        var teleportClient = new TeleportClient({
            serverAddress: "ws://localhost:8000",
            autoReconnect: 3000,
            authFunc: function(callback) {
                callback(null, 'example project');
            }
        });
    </script> 
    ...
Example:
var teleportClient = new TeleportClient({
    serverAddress: "ws://localhost:8000",
    autoReconnect: 3000,
    authFunc: function(callback) {
        callback(null, 'example project');
    }
})
    .on('ready', function(objectsProps, objects) {
            console.log(objectsProps);
 
            objects.ipBox
                .getIps(someCallback)
                .on('newIps', someHandler);
    });
 
teleportClient.applyDependences(function(logBox) {
    logBox.getLogs(someCallback);
})
 
teleportClient.applyDependences(['blackBox', function(box) {
    box.getColor(someCallback);
}]);
 
...
someObj.someFunc.dependences = ['ipBox'];
 
teleportClient.applyDependences(someObj.someFunc, someObj);
 
Параметры принимаемые конструктором:
  • serverAddress - адрес и порт TeleportServer.
  • autoReconnect - время задержки в миллисекундах перед переподключением к серверу, после разрыва соединения.
  • authFunc - функция генерирующая авторизационные данные для подключения к серверу, будет вызвана только один раз.
Публичные методы:
  • destroy - метод прекращающий работу объекта.
  • applyDependences - метод разрешающий зависимости переданной в него функции. Просто взял у angularjs.
    Принимает на вход :
    • функцию или массив содержищий имена зависимостей и функцию.
    • опционально вторым аргументом принимает контекст с которым будет вызванна функция.
Events:

Эти события отражают текущее состояние TeleportClient.
Выбрасываются без аргументов, если не указанно иное.

  • ready - признак успешного соединения с сервром и регистрации всех телепортируемых объектов.
    Выбрасывается с двумя аргументами:
    Первый содержит свойства телепортированных объектов.
    Второй непосредственно телепортированные объекты.
  • destroyed - признак успешного разрушения объекта вызовом метода destroy,
    содинение с сервером разорванно, все каллбеки ожидающие результат вызваны с ошибкой.
  • alreadyDestroyed - будут выброшено если ранее метод destroy уже выполнялся.
  • error - ошибки ядра (socket.io-client). В качестве аргумента подписчики получат ошибку.

  • reconnecting - признак разрыва соединения, через время указанное в поле autoReconnect будет предпринята попытка переподключения.
  • reconnect - признак успешного переподключения к серверу.
  • reconnectOnOldTerms - соединение востановленно, сервер не перезапущен, время ожидания переподключения сервером не истекло.
    Выбрасывается вместе с reconnected.
  • reconnectAndReinit - признак успешного переподключения к перезапущенному.
    Или если истекло время ожидания сервером переподключения этого клиента, и поэтому клиент заново зарегистрировался на сервере.
    Ожидающие результат выполнения каллбеки будут вызванны с ошибкой, команды ожидавшие переподключения так же отправленны не будут, так как это новый экземпляр сервера.
    Выбрасывается вмете с reconnected.
How to debug:

DEBUG=TeleportClient* npm test

Запоздалый ChangeLog:
  • 0.6.10 - теперь callback принимает неограниченное количество аргументов.
  • 0.6.9 - исправленна ошибка, из за которой ready выбрасывался без второго аргумента содержащего телепортированные объекты.

Readme

Keywords

Package Sidebar

Install

npm i teleport-client

Weekly Downloads

0

Version

0.6.18

License

MIT

Last publish

Collaborators

  • nskazki