program PushNotificationsServer; {$APPTYPE CONSOLE} uses System.SysUtils, Winapi.Windows, Winapi.ShellAPI, Web.WebReq, Web.WebBroker, IdHTTPWebBrokerBridge, MainControllerU in 'MainControllerU.pas', WebModuleU in 'WebModuleU.pas' {MyWebModule: TWebModule}; {$R *.res} procedure RunServer(APort: Integer); var LInputRecord: TInputRecord; LEvent: DWord; LHandle: THandle; LServer: TIdHTTPWebBrokerBridge; begin Writeln('** DMVCFramework Server **'); Writeln(Format('Starting HTTP Server on port %d', [APort])); LServer := TIdHTTPWebBrokerBridge.Create(nil); try LServer.DefaultPort := APort; LServer.Active := True; { more info about MaxConnections http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=TIdCustomTCPServer_MaxConnections.html} LServer.MaxConnections := 0; { more info about ListenQueue http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=TIdCustomTCPServer_ListenQueue.html} LServer.ListenQueue := 200; { Comment the next line to avoid the default browser startup } ShellExecute(0, 'open', PChar('http://localhost:' + inttostr(APort)), nil, nil, SW_SHOWMAXIMIZED); Writeln('Press ESC to stop the server'); LHandle := GetStdHandle(STD_INPUT_HANDLE); while True do begin Win32Check(ReadConsoleInput(LHandle, LInputRecord, 1, LEvent)); if (LInputRecord.EventType = KEY_EVENT) and LInputRecord.Event.KeyEvent.bKeyDown and (LInputRecord.Event.KeyEvent.wVirtualKeyCode = VK_ESCAPE) then break; end; finally LServer.Free; end; end; begin ReportMemoryLeaksOnShutdown := True; try if WebRequestHandler <> nil then WebRequestHandler.WebModuleClass := WebModuleClass; WebRequestHandlerProc.MaxConnections := 1024; RunServer(8080); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.