import Vapor var deviceManager: DeviceManager! // configures your application public func configure(_ app: Application) throws { app.http.server.configuration.port = 6003 let storageFolder = URL(fileURLWithPath: app.directory.resourcesDirectory) let keyFile = storageFolder.appendingPathComponent("deviceKey") let deviceKey = try String(contentsOf: keyFile) .trimmingCharacters(in: .whitespacesAndNewlines) deviceManager = DeviceManager(deviceKey: deviceKey) try routes(app) // Gracefully shut down by closing potentially open socket DispatchQueue.global(qos: .utility).asyncAfter(deadline: .now() + .seconds(5)) { _ = app.server.onShutdown.always { _ in deviceManager.removeDeviceConnection() } } }