// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddSingleton <Try <IMongoDatabase>, TryMongoService>(); services.AddTransient <IEnvironmentService, EnvironmentService>(); services.AddTransient <IShell, ShellService>(); services.AddTransient <INginxService, NginxService>(); services.AddSingleton <IProcessManager, ProcessManager>(); services.AddSingleton <NewWebsocekthandler, NewWebsocekthandler>(); ISocketServicec service = null; services.AddSingleton <ISocketServicec>(p => { if (service != null) { return(service); } else { service = new SocketService(); return(service); } }); services.AddSingleton <IMonitorService, MonitorService>(); services.AddMvc(); }
public MonitorService( ISocketServicec socketServicec, Try <IMongoDatabase> db, IProcessManager processManager ) { this.socketServicec = socketServicec; this.db = db; _processManager = processManager; db.databaseStatusChange += isOnline => { System.Console.WriteLine("status callback"); socketServicec.Broadcast(new { isOnline = isOnline }, "_mongoStatus"); }; }
public NewWebsocekthandler(Try <IMongoDatabase> db, ISocketServicec socektService) { _db = db; socektService.newWebsocket += (socket, type) => { if (type == "_mongoPerformance") { SendInitialData(socket); } else if (type == "_mongoStatus") { socket.SendJson(new { isOnline = db.IsOnline }); } else { SendAppPerf(socket, type); }; }; }
public ServeWebsocketMiddleware(RequestDelegate next, ISocketServicec socektService) { this._next = next; this._socektService = socektService; }