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 выбрасывался без второго аргумента содержащего телепортированные объекты.

    Keywords

    Install

    npm i teleport-client

    DownloadsWeekly Downloads

    29

    Version

    0.6.18

    License

    MIT

    Last publish

    Collaborators

    • nskazki