mojio-js-sdk
Version:
Mojio javascript REST client.
55 lines (46 loc) • 1.92 kB
text/coffeescript
SignalR = require 'signalr-client'
iSignalRWrapper = require '../helpers/iSignalRWrapper'
SignalRRegistry = require '../interfaces/SignalRRegistry'
#
module.exports = class SignalRNodeWrapper extends iSignalRWrapper
registry = new SignalRRegistry()
constructor: (, , = {}) ->
= hubNames
= null
super()
getHub: (which, callback, retries = 10) ->
?= new SignalR.client(, , null)
hub = registry.hubs[which]
return callback(null, hub) if hub?
if hub == .hub(which)
hub.on 'error', (data) -> log data
hub.on 'UpdateEntity', registry.observer_registry
return callback null, hub
else if retries-- > 0
_this = @
retry = () ->
_this.getHub which, callback, retries
setTimeout retry, 1000
else
callback "Timed out.", null
subscribe: (hubName, method, observerId, subject, futureCallback, callback) ->
registry.setCallback(subject, futureCallback)
unsubscribe: (hubName, method, observerId, subject, pastCallback, callback) ->
registry.removeCallback(subject, pastCallback)
if (registry.observer_callbacks[subject].length == 0)
else
callback(null, true)