Browse Source

fcl-web: added TCustomWebsocketUpgrader.OnConnect

mattias 2 years ago
parent
commit
dea9aa56a7
1 changed files with 8 additions and 4 deletions
  1. 8 4
      packages/fcl-web/src/websocket/wsupgrader.pp

+ 8 - 4
packages/fcl-web/src/websocket/wsupgrader.pp

@@ -11,6 +11,7 @@ Type
 
   { TCustomWebsocketUpgrader }
   TAllowUpgradeEvent = Procedure(Sender : TObject; aRequest : TRequest; var aAllow : Boolean) of object;
+  TWSConnectEvent = procedure(Sender: TObject; AConnection: TWSServerConnection) of object;
 
   TCustomWebsocketUpgrader = Class(TCustomWSServer)
   private
@@ -22,8 +23,8 @@ Type
     FHost: String;
     function GetHandshakeRequest(aRequest: TFPHTTPConnectionRequest): TWSHandShakeRequest;
     function GetUpgradeName: String;
-    procedure SetHost(const AValue: String);
-    procedure SetUpgradeName(const AValue: String);
+    procedure SetHost(AValue: String);
+    procedure SetUpgradeName(AValue: String);
     procedure SetWebServer(AValue: TFPCustomHttpServer);
   Protected
     // Override from custom server
@@ -64,6 +65,7 @@ Type
     Property MessageWaitTime;
     Property Options;
     Property OnAllow;
+    property OnConnect;
     property OnMessageReceived;
     property OnDisconnect;
     property OnControlReceived;
@@ -117,7 +119,7 @@ begin
   FreeConnectionHandler;
 end;
 
-procedure TCustomWebsocketUpgrader.SetHost(const AValue: String);
+procedure TCustomWebsocketUpgrader.SetHost(AValue: String);
 begin
   if Host=AValue then Exit;
   CheckInactive;
@@ -204,6 +206,8 @@ begin
     aConn.DoHandshake(aHandshake);
     Connections.Add(aConn);
     ConnectionHandler.HandleConnection(aConn,False);
+    if Assigned(OnConnect) then
+      OnConnect(Self,aConn);
   finally
     aHandshake.Free;
   end;
@@ -216,7 +220,7 @@ begin
 end;
 
 
-procedure TCustomWebsocketUpgrader.SetUpgradeName(const AValue: String);
+procedure TCustomWebsocketUpgrader.SetUpgradeName(AValue: String);
 begin
   if aValue=GetUpgradeName then
     exit;