uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
wsutils,
wsmessages,
wsstream,
ssockets,
WebsocketsClient;
type
{ TForm1 }
TForm1 = class(TForm)
btnSubscribe: TButton;
btnUnsubscribe: TButton;
edtPort: TEdit;
edtSubscribeAddress: TEdit;
mmoResult: TMemo;
mmoSubscriptionInfo: TMemo;
MessageTimer: TTimer;
procedure btnSubscribeClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure MessageTimerTimer(Sender: TObject);
private
MyClient : TWebsocketClient;
MyStream : TWebSocketCommunincator;//TStream;
procedure HandleClose(sender: TObject);
public
end;
var
Form1: TForm1;
MyStreamVar : TLockedSocketStream;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.HandleClose(Sender: TObject);
begin
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MyStream.Create(MyStreamVar,False,False);
MyClient := TWebsocketClient.Create('stream.binance.com', 9443, '/');
MyStream := MyClient.Connect(TSocketHandler.Create);// GetDefaultHandler
MyStream.OnClose := @HandleClose; // Handle close is a procedure HandleClose(sender: TObject); in your class
MyStream.StartReceiveMessageThread; // handle all incoming messages
end;
procedure TForm1.btnSubscribeClick(Sender: TObject);
VAR
MyResponse : TWebSocketStringMessage;
MyTextData : UTF8String;
begin
{
MyTextData:='';
MyResponse.Create(MyTextData);
MyStream.WriteStringMessage(mmoSubscriptionInfo.Lines.Text);// 'JSON subscribe request'
MyResponse := MyStream.WaitForStringMessage;
try
// Check if response.Data contains the expected response
finally
MyResponse.Free;
end;
}
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
MyStream.Free;
MyClient.Free;
end;
procedure TForm1.MessageTimerTimer(Sender: TObject);
var
Messages: TWebsocketMessageOwnerList;
Message: TWebsocketMessage;
begin
{
Messages := TWebsocketMessageOwnerList.Create;
try
MyStream.GetUnprocessedMessages(Messages);
for Message in Messages do
// Update your UI with the contents of Message
mmoResult.Append(Message.ToString);
finally
Messages.Free;
end;
}
end;
end.