瀏覽代碼

Added SSL support for Websocket client.

Yuri Serebrennikov 3 年之前
父節點
當前提交
a5486e04cd
共有 1 個文件被更改,包括 12 次插入2 次删除
  1. 12 2
      packages/fcl-web/src/websocket/fpwebsocketclient.pp

+ 12 - 2
packages/fcl-web/src/websocket/fpwebsocketclient.pp

@@ -19,7 +19,7 @@ unit fpwebsocketclient;
 interface
 
 uses
-  sysutils, classes, fpwebsocket, ssockets;
+  sysutils, classes, fpwebsocket, ssockets, sslsockets, opensslsockets, fpopenssl;
 
 Type
   EWebSocketClient = Class(EWebSocket);
@@ -276,17 +276,27 @@ begin
 end;
 
 procedure TCustomWebsocketClient.Connect;
+var
+  SSLHandler: TSSLSocketHandler;
 begin
   If Active then
     Exit;
   // Safety: Free any dangling objects before recreating
   FreeConnectionObjects;
-  FSocket:=TInetSocket.Create(HostName,Port,ConnectTimeout);
+  SSLHandler := nil;
+  if UseSSL then
+  begin
+    SSLHandler := TOpenSSLSocketHandler.GetDefaultHandler;
+    SSLHandler.VerifyPeerCert := False;
+  end;
+  FSocket:=TInetSocket.Create(HostName,Port,ConnectTimeout, SSLHandler);
   FTransport:=TWSClientTransport.Create(FSocket);
   FConnection:=CreateClientConnection(FTransport);
   FConnection.OnMessageReceived:=@MessageReceived;
   FConnection.OnControl:=@ControlReceived;
   FCOnnection.OutgoingFrameMask:=Self.OutGoingFrameMask;
+  if UseSSL then
+    FSocket.Connect;
   FActive:=True;
   if not DoHandShake then
     Disconnect(False)