UNPKG

mojio-js-sdk

Version:

Mojio javascript REST client.

70 lines (62 loc) 2.6 kB
# assume's JQuery javascript client (bower install jquery). iSignalRWrapper = require './iSignalRWrapper' SignalRRegistry = require './SignalRRegistry' module.exports = class SignalRBrowserWrapper extends iSignalRWrapper registry = new SignalRRegistry() constructor: (@url, @hubNames, jquery) -> # hubNames not used. @$ = jquery @available_hubs = hubNames @signalr = null @connectionStatus = false super() getHub: (which, callback) -> if (registry.hubs[which]) callback(null, registry.hubs[which]) else if (!@signalr?) @signalr = @$.hubConnection(@url, { useDefaultPath: false }) @signalr.error( (error) -> console.log("Connection error"+error) callback(error, null) ) registry.hubs[which] = @signalr.createHubProxy(which) hub = registry.hubs[which] hub.on("error", (data) -> console.log("Hub '"+which+"' has error"+data) ) hub.on("UpdateEntity", registry.observer_registry) if (hub.connection.stateMachine != 1) if (!@connectionStatus) @signalr.start().done( () => @connectionStatus = true hub.connection.start().done( () => callback(null, hub) ) ) else hub.connection.start().done( () => callback(null, hub) ) else callback(null, hub) subscribe: (hubName, method, observerId, subject, futureCallback, callback) -> registry.setCallback(subject, futureCallback) @getHub(hubName, (error, hub) -> if error? callback(error, null) else hub.invoke(method, observerId) if hub? callback(null, hub) ) unsubscribe: (hubName, method, observerId, subject, pastCallback, callback) -> registry.removeCallback(subject, pastCallback) if (registry.observer_callbacks[subject].length == 0) @getHub(hubName, (error, hub) -> if error? callback(error, null) else hub.invoke(method, observerId) if hub? callback(null, hub) ) else callback(null, true)