code: function DiscoveryServerIopaWire(app) {
    if (!app.properties[SERVER.Capabilities][IOPA.CAPABILITIES.Udp])
      throw ("Missing Dependency: UDP Server/Middleware in Pipeline");
  
    if (!app.properties[SERVER.Capabilities][DEVICESMIDDLEWARE.CAPABILITY])
      throw ("Missing Dependency: IOPA Devices Server/Middleware in Pipeline");
  
    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.app = app;
    this._devices = {};
    this._factory = new iopa.Factory();
    this._server = null;
  
    app.device = app.device || {};
    app.device.register = this.register.bind(this, app.device.register || function (device) { return Promise.resolve(device); });
    app.device.unregister = this.register.bind(this, app.device.unregister || function (id) { return Promise.resolve(id); });
  }
docs: CoAP IOPA Middleware for Managing Server Sessions including Auto Subscribing Client Subscribe Requests
  
  @class CoAPSubscriptionClient
  @this app.properties  the IOPA AppBuilder Properties Dictionary, used to add server.capabilities
  @constructor
  @public