TTMSFNCWebsocketClient is a headless component for connecting to WebSocket servers and exchanging text and binary messages over a persistent, bidirectional connection. It implements the RFC 6455 WebSocket protocol, including the handshake, masking, fragmentation, ping and pong, and the closing handshake, over plain ws:// or TLS-secured wss:// connections. Use it whenever a VCL or FMX application must receive data the moment a server pushes it.
Not available; use TMS WEB Core's TWebSocketClient component in browser applications.
Minimal example
Create the client, point it at a server, wire the connection events, and connect:
Connect to a WebSocket serverPascalC++
procedure TForm1.SetupClient;
begin
FClient := TTMSFNCWebsocketClient.Create(Self);
FClient.HostName := 'localhost';
FClient.Port := 5050;
FClient.OnConnect := ClientConnect;
FClient.OnDisconnect := ClientDisconnect;
FClient.OnMessageReceived := ClientMessageReceived;
// Connect blocks until the TCP connection and the WebSocket handshake are
// done. OnConnect fires before it returns; Active stays False when the
// server rejected the handshake.
FClient.Connect;
if not FClient.Active then
ShowMessage('The server did not accept the WebSocket handshake.');
end;
procedure TForm1.ClientConnect(Sender: TObject; AConnection: TTMSFNCWebSocketConnection);
begin
// Connected - it is now safe to Send.
sendBtn.Enabled := True;
end;
procedure TForm1.ClientDisconnect(Sender: TObject; AConnection: TTMSFNCWebSocketConnection);
begin
sendBtn.Enabled := False;
end;
void __fastcall TForm1::SetupClient()
{
FClient = new TTMSFNCWebsocketClient(this);
FClient->HostName = "localhost";
FClient->Port = 5050;
FClient->OnConnect = ClientConnect;
FClient->OnDisconnect = ClientDisconnect;
FClient->OnMessageReceived = ClientMessageReceived;
// Connect blocks until the TCP connection and the WebSocket handshake are
// done. OnConnect fires before it returns; Active stays False when the
// server rejected the handshake.
FClient->Connect();
if (!FClient->Active)
ShowMessage("The server did not accept the WebSocket handshake.");
}
void __fastcall TForm1::ClientConnect(TObject *Sender, TTMSFNCWebSocketConnection *AConnection)
{
// Connected - it is now safe to Send.
sendBtn->Enabled = true;
}
void __fastcall TForm1::ClientDisconnect(TObject *Sender, TTMSFNCWebSocketConnection *AConnection)
{
sendBtn->Enabled = false;
}