HttpServerService.dpr 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. program HttpServerService;
  2. {$APPTYPE CONSOLE}
  3. {$R *.res}
  4. uses
  5. System.SysUtils,
  6. Quick.Commons,
  7. Quick.Logger.Intf,
  8. Quick.Console,
  9. Quick.AppService,
  10. Quick.HttpServer,
  11. Quick.HttpServer.Request,
  12. Quick.HttpServer.Response,
  13. HttpServerService.Logger;
  14. type
  15. TMyHttpServer = class(THttpServer)
  16. public
  17. procedure ProcessRequest(aRequest: IHttpRequest; aResponse: IHttpResponse); override;
  18. end;
  19. procedure TMyHttpServer.ProcessRequest(aRequest: IHttpRequest; aResponse: IHttpResponse);
  20. begin
  21. aResponse.ContentText := 'Hello world!';
  22. end;
  23. var
  24. HttpServer : TMyHttpServer;
  25. Port : Integer;
  26. Logger : TQuickLogger;
  27. begin
  28. try
  29. ReportMemoryLeaksOnShutdown := True;
  30. //run as console
  31. Logger := TQuickLogger.Create;
  32. Logger.Init;
  33. if not AppService.IsRunningAsService then
  34. begin
  35. //create server
  36. cout('Init server...',etInfo);
  37. if ParamCount > 0 then
  38. begin
  39. Integer.TryParse(ParamStr(1),Port)
  40. end;
  41. //start server
  42. if Port = 0 then Port := 8080;
  43. HttpServer := TMyHttpServer.Create('127.0.0.1',Port,False,Logger);
  44. try
  45. HttpServer.Start;
  46. //Wait for Exit
  47. cout(' ',ccWhite);
  48. cout('Press [Enter] to quit',ccYellow);
  49. ConsoleWaitForEnterKey;
  50. finally
  51. HttpServer.Free;
  52. end;
  53. end
  54. else //run as a service
  55. begin
  56. AppService.DisplayName := 'Remote Server';
  57. AppService.ServiceName := 'RemoteServerSvc';
  58. AppService.CanInstallWithOtherName := True;
  59. AppService.OnStart := procedure
  60. begin
  61. HttpServer := TMyHttpServer.Create('127.0.0.1',Port,False,nil);
  62. end;
  63. AppService.OnStop := HttpServer.Free;
  64. AppService.OnExecute := HttpServer.Start;
  65. AppService.CheckParams;
  66. end;
  67. except
  68. on E: Exception do
  69. Writeln(E.ClassName, ': ', E.Message);
  70. end;
  71. end.