code: function DiscoveryClientSSDP(app) {
    app.properties[SERVER.Capabilities][THISMIDDLEWARE.CAPABILITY] = {};
    app.properties[SERVER.Capabilities][THISMIDDLEWARE.CAPABILITY][SERVER.Version] = packageVersion;
  
    //Also register as standard IOPA DISCOVERY SERVER MIDDLEWARE
    app.properties[SERVER.Capabilities][IOPA.CAPABILITIES.DiscoveryServer] = {};
    app.properties[SERVER.Capabilities][IOPA.CAPABILITIES.DiscoveryServer][SERVER.Version] = app.properties[SERVER.Capabilities][IOPA.CAPABILITIES.App][SERVER.Version];
  
    this._seq = 0;
    this._factory = new iopa.Factory();
    this._SSDPserver = null;
    this._SSDPclient = null;
    this._HTTPClient = null;
    
    this.id = app.properties[SERVER.AppId] + ":";
    this.seq = 0;
  
    app.device = app.device || {};
    app.device.probe = this.probe.bind(this, app.device.probe || function(query, cb){return Promise.resolve(null);});
    
    this.ssdpApp = new iopa.App();
    this.ssdpApp.use(IopaUDP);
    this.ssdpApp.use(IopaSSDP);
    this.ssdpApp.use(IopaCache.Match);
      this.ssdpApp.use(IopaCache.Cache);
   this.ssdpApp.use(IopaMessageLogger);
  
   
    this.ssdpApp.use(this.invoke.bind(this));
    
  }
docs: UPNP SSDP IOPA Middleware for Device Discovery Publishing
  
  @class DiscoveryServerSSDP
  @this app.properties  the IOPA AppBuilder Properties Dictionary, used to add server.capabilities
  @constructor
  @public