TeleportClient
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 = ; var teleportClient = serverAddress: "ws://localhost:8000" autoReconnect: 3000 { ; };
- classic style:
... ...
Example:
var teleportClient = serverAddress: "ws://localhost:8000" autoReconnect: 3000 { ; } ; teleportClient teleportClient; ...someObjsomeFuncdependences = 'ipBox'; teleportClient;
Параметры принимаемые конструктором:
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
выбрасывался без второго аргумента содержащего телепортированные объекты.