HttpServerService.dpr 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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 in 'HttpServerService.Logger.pas';
  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. // Use TCP port 8889 for demo
  34. // Otherise, we need to register/open the port
  35. Port:=8889;
  36. if not AppService.IsRunningAsService then
  37. begin
  38. //create server
  39. cout('Init server...',etInfo);
  40. if ParamCount > 0 then
  41. begin
  42. Integer.TryParse(ParamStr(1),Port)
  43. end;
  44. //start server
  45. if Port = 0 then Port := 8080;
  46. HttpServer := TMyHttpServer.Create('127.0.0.1',Port,False,Logger);
  47. try
  48. HttpServer.Start;
  49. //Wait for Exit
  50. cout(' ',ccWhite);
  51. cout('Press [Enter] to quit',ccYellow);
  52. ConsoleWaitForEnterKey;
  53. finally
  54. HttpServer.Free;
  55. end;
  56. end
  57. else //run as a service
  58. begin
  59. AppService.DisplayName := 'Remote Server';
  60. AppService.ServiceName := 'RemoteServerSvc';
  61. AppService.CanInstallWithOtherName := True;
  62. AppService.OnStart := procedure
  63. begin
  64. HttpServer := TMyHttpServer.Create('127.0.0.1',Port,False,nil);
  65. end;
  66. AppService.OnStop := HttpServer.Free;
  67. AppService.OnExecute := HttpServer.Start;
  68. AppService.CheckParams;
  69. end;
  70. except
  71. on E: Exception do
  72. Writeln(E.ClassName, ': ', E.Message);
  73. end;
  74. end.