Browse Source

fcl-web: added property TWebSocketServer.Host

mattias 3 years ago
parent
commit
4f8d6c9df1
1 changed files with 15 additions and 6 deletions
  1. 15 6
      packages/fcl-web/src/websocket/fpwebsocketserver.pp

+ 15 - 6
packages/fcl-web/src/websocket/fpwebsocketserver.pp

@@ -34,6 +34,7 @@ type
     FActive: Boolean;
     FAfterSocketHandlerCreated: TWSSocketHandlerCreatedEvent;
     FCertificateData: TCertificateData;
+    FHost: String;
     FMessageWaitTime: Cardinal;
     FOnAcceptIdle: TAcceptIdleEvent;
     FOnGetSocketHandler: TWSGetSocketHandlerEvent;
@@ -44,6 +45,7 @@ type
     FUseSSL: Boolean;
     procedure SetAcceptIdleTimeout(AValue: Cardinal);
     procedure SetCertificateData(AValue: TCertificateData);
+    procedure SetHost(const AValue: String);
     procedure SetPort(AValue: Word);
     procedure SetQueueSize(AValue: Word);
     procedure SetUseSSL(AValue: Boolean);
@@ -80,6 +82,7 @@ type
     Property MessageWaitTime;
     Property Options;
     Property Port: Word Read FPort Write SetPort default 8080;
+    Property Host: String Read FHost Write SetHost; // default '0.0.0.0'
     Property Resource;
     Property WebSocketVersion;
     property OnConnect;
@@ -110,7 +113,7 @@ type
 implementation
 
 uses
-  sslsockets, sockets;
+  sslsockets;
 
 Type
   { TAcceptThread }
@@ -227,8 +230,9 @@ begin
     begin
     Connections.Add(Con);
     ConnectionHandler.HandleConnection(Con,True);
+
     if Assigned(OnConnect) then
-      OnConnect(Sender, Con);
+      OnConnect(Self,Con);
     end;
 end;
 
@@ -270,6 +274,13 @@ begin
   FCertificateData.Assign(AValue);
 end;
 
+procedure TWebSocketServer.SetHost(const AValue: String);
+begin
+  if FHost=AValue then Exit;
+  CheckInactive;
+  FHost:=AValue;
+end;
+
 function TWebSocketServer.GetActive: Boolean;
 begin
   Result:=Assigned(FServer);
@@ -291,9 +302,6 @@ begin
     AcceptIdleTimeout:=DefaultAcceptTimeout;
 end;
 
-
-
-
 procedure TWebSocketServer.FreeServerSocket;
 begin
   FreeAndNil(FServer);
@@ -303,7 +311,7 @@ end;
 procedure TWebSocketServer.CreateServerSocket;
 
 begin
-  FServer:=TInetServer.Create(FPort);
+  FServer:=TInetServer.Create(FHost,FPort);
   FServer.OnCreateClientSocketHandler:=@DoCreateClientHandler;
   FServer.MaxConnections:=-1;
   FServer.OnConnectQuery:=@DoAllowConnect;
@@ -368,6 +376,7 @@ end;
 constructor TWebSocketServer.Create(AOwner: TComponent);
 begin
   inherited Create(AOwner);
+  FHost:='0.0.0.0';
   FPort:=8080;
   FQueueSize:=5;
   FMessageWaitTime:=DefaultWaitTime;