sgcWebSocket 組件作爲商業組件,相對比較成熟,今天研究一下,參考官網地址:https://www.esegece.com
-
服務端
sgcWebSocketServer
屬性:Bindings 增加監聽socket 配置監聽Ip地址和端口
Active 激活監聽功能
方法:OnConnect 客戶端連接到服務端時觸發的方法
OnMessage 收到客戶端消息時觸發的方法
至此,一個簡單的WebSocket服務端已經實現了。
源碼:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, sgcBase_Classes, sgcSocket_Classes, sgcTCP_Classes,
sgcWebSocket_Classes, sgcWebSocket_Server, sgcWebSocket, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
sgcWebSocketServer1: TsgcWebSocketServer;
procedure Button1Click(Sender: TObject);
procedure sgcWebSocketServer1Message(Connection: TsgcWSConnection;
const Text: String);
procedure sgcWebSocketServer1Connect(Connection: TsgcWSConnection);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
sgcWebSocketServer1.Active:=True;
Button1.Caption:='Stop';
end;
procedure TForm1.sgcWebSocketServer1Message(Connection: TsgcWSConnection;
const Text: String);
begin
ShowMessage('Message Received From Client:'+text);
end;
procedure TForm1.sgcWebSocketServer1Connect(Connection: TsgcWSConnection);
begin
Caption:='Connected!';
end;
end.
-
客戶端
sgcWebSocketClient
屬性:Host 服務端地址
Port 服務端端口
Active 激活連接
事件:WriteData() 發送數據
源碼
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, sgcBase_Classes, sgcSocket_Classes, sgcTCP_Classes,
sgcWebSocket_Classes, sgcWebSocket_Classes_Indy, sgcWebSocket_Client,
sgcWebSocket;
type
TForm2 = class(TForm)
sgcWebSocketClient1: TsgcWebSocketClient;
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
sgcWebSocketClient1.Active:=True;
Button1.Enabled:=False;
Button2.Enabled:=True;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
sgcWebSocketClient1.WriteData('Hello Server From VCL Client');
end;
end.