TeleportServer
npm install teleport-server --save
Это RPC сервер, умеет:
- Авторизовывать клиентов.
- Сообщать клиенту о именах телепортируемых объектов, их методах, типах выбрасываемых событий.
- Сообщать подключенным клиентам о выбрасываемых объектами событиях.
- Выполнять на сервере вызванные клиентом методы и возвращать результат.
Особенности:
- Работает только с объектами.
- Работает только с асинхронными методами объктов, принимающими неограниченное количество аргументов и callback.
- Методы телепортируемых объектов могут возвращать в callback неограниченное количество аргументов.
- Выбрасываемые объектами события могут содержать неограниченное количество аргументов.
- Все аргументы передаваемые на сервер и результаты возвращаемые на клиента проходят через JSON.stringify -> JSON.parse.
- Авторизация обязательно, я серьезно, передавайте в качестве авторизационных данных хотя бы имя проекта,
не стреляйте себе в ногу лишний раз. - Указывать время по истечении которого клиент считается безвозвратно отключенным обязательно,
по истечении этого времени очищается буфер выброшенных телепортируемыми объектами событий и невозвращенных результатов вызванных этим клиентом методов.
Кил фича:
Если соединение с сервером кратковременно оборвется, то:
- Клиент получит все выброшенные телепортированными объектами события за время отсутствия соединения.
- Если клиентом был вызван некоторый метод до обрыва соединения,
то после переподключения он получит результат этого вызова. - Если клиент вызовет метод телепортированного объекта во время отсутствия соединения,
то он будет вызван когда соединение восстановится.
Example:
var 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' { ; };
Параметры принимаемые конструктором:
-
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 принимает неограниченное количество аргументов.