This code can successfully connect to the websocket, but the custom heartbeat doesn't work. If I use the commented-out part of the code, the custom heartbeat works fine. How should I modify my code?
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
sgcBase_Classes, sgcSocket_Classes, sgcTCP_Classes, sgcWebSocket_Classes, sgcWebSocket_Classes_Indy, sgcWebSocket_Client, sgcWebSocket,
Vcl.StdCtrls, qstring, sgcWebSocket_Types;
type
TForm1 = class(TForm)
sgcWebSocketClient1: TsgcWebSocketClient;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure sgcWebSocketClient1Message(Connection: TsgcWSConnection; const Text: string);
procedure sgcWebSocketClient1BeforeHeartBeat(Sender: TObject; const Connection: TsgcWSConnection; var Handled: Boolean);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
Fws: TsgcWebSocketClient;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
// sgcWebSocketClient1.HeartBeat.Enabled := True;
// sgcWebSocketClient1.url := 'ws://124.222.6.60:8800';
// if sgcWebSocketClient1.Connect(5000) then
// begin
// sgcWebSocketClient1.WriteData('你好');
// Fws.HeartBeat.Interval := 3;
// end;
fws.HeartBeat.Enabled := True;
fws.url := 'ws://124.222.6.60:8800';
if fws.Connect(5000) then
begin
fws.WriteData('你好');
Fws.HeartBeat.Interval := 3;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Fws := TsgcWebSocketClient.Create(Form1);
Fws.OnMessage := sgcWebSocketClient1Message;
Fws.OnBeforeHeartBeat := sgcWebSocketClient1BeforeHeartBeat;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Fws.Free;
end;
procedure TForm1.sgcWebSocketClient1BeforeHeartBeat(Sender: TObject; const Connection: TsgcWSConnection; var Handled: Boolean);
begin
Connection.WriteData(DateTimeToStr(now) + '==>心跳包');
Handled := True;
end;
procedure TForm1.sgcWebSocketClient1Message(Connection: TsgcWSConnection; const Text: string);
begin
Debugout(Text);
end;
end.