WebSockets TMS Sparkle

· Bileşenler

Bir müşteri TMS Sparkle ve sgcWebSockets'in birlikte çalışıp çalışamayacağını sordu ve yanıt evet; sgcWebSockets ve TMS Sparkle'ı aynı sunucuda çalıştırmakta hiçbir sorun yoktur. Her ikisi de HTTP.SYS sunucusu kullanarak çalışabilir, tek bir HTTP.SYS sunucusu çalıştırabilir ve uç noktaları Sparkle ve sgcWebSockets ile sorunsuz çalışacak şekilde yapılandırabilirsiniz. Temel olarak, her pakette hangi uç noktanın işleneceğini yapılandırırsınız.

sgcWebSockets, HTTP API Sunucusu aracılığıyla HTTP.SYS sunucusunda çalışabilir:

https://www.esegece.com/help/sgcWebSockets/#t=Components%2FTsgcWebSocketServer_HTTPAPI.htm

sgcWebSockets ve TMS Sparkle'ın aynı HTTP.SYS sunucusunda nasıl çalışabileceğini gösteren 2 örneği aşağıda bulabilirsiniz.

sgcWebSockets Örneği

program sgcWSServer;
{$APPTYPE CONSOLE}
{$R *.res}
uses
  System.SysUtils,
  sgcWebSocket, sgcWebSocket_Classes,
  sgcWebSocket_Server_HTTPAPI;
type
  TsgcServerClass = class
    public
      procedure OnConnectEvent(Connection: TsgcWSConnection);
      procedure OnMessageEvent(Connection: TsgcWSConnection; const Text: String);
  end;
procedure TsgcServerClass.OnConnectEvent(Connection: TsgcWSConnection);
begin
   Connection.WriteData('Hello From Server.');
end;
procedure TsgcServerClass.OnMessageEvent(Connection: TsgcWSConnection; const
    Text: String);
begin
  Connection.WriteData(Text);
end;
var
  oServer: TsgcWebSocketServer_HTTPAPI;
  oConnection: TsgcServerClass;
begin
  try
    oServer := TsgcWebSocketServer_HTTPAPI.Create(nil);
    oConnection := TsgcServerClass.Create;
    Try
      oServer.Bindings.NewBinding('127.0.0.1', 2001, '/ws/');
      oServer.OnConnect := oConnection.OnConnectEvent;
      oServer.OnMessage := oConnection.OnMessageEvent;
      oServer.Active := True;
      WriteLn('sgcWebSockets Server started at ws://127.0.0.1:2001/ws');
      while oServer.Active do
        Sleep(10);
    Finally
      oConnection.Free;
      oServer.Free;
    End;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

TMS Sparkle Örneği

program HelloWorldServer;
{$APPTYPE CONSOLE}
uses
  System.SysUtils,
  Sparkle.HttpServer.Context,
  Sparkle.HttpServer.Module,
  Sparkle.HttpSys.Server;
type
  THelloWorldModule = class(THttpServerModule)
    public procedure ProcessRequest(const C: THttpServerContext); override;
  end;
procedure THelloWorldModule.ProcessRequest(const C: THttpServerContext);
begin
  C.Response.StatusCode := 200;
  C.Response.ContentType := 'text/plain';
  C.Response.Close(TEncoding.UTF8.GetBytes('Hello, World!'));
end;
const
  ServerUrl = 'http://127.0.0.1:2001/rest';
var
  Server: THttpSysServer;
begin
  Server := THttpSysServer.Create;
  try
    Server.AddModule(THelloWorldModule.Create(ServerUrl));
    Server.Start;
    WriteLn('Hello World Server started at ' + ServerUrl);
    WriteLn('Press Enter to stop');
    ReadLn;
  finally
    Server.Free;
  end;
end. 

Derlenmiş Örnekler

Örnekleri çalıştırmak için aşağıdaki talimatları izleyin:

1. sgcWSServer'ı Yönetici olarak çalıştırın. 2001 portunu ve "/ws" uç noktasını dinleyen bir WebSocket sunucusu açar

2. HelloWorldServer'ı çalıştırın. 2001 portunu ve "/rest" uç noktasını dinleyen bir REST sunucusu açar

3. ws://127.0.0.1:2001/ws adresine bir websocket bağlantısı açın. Bağlandıktan sonra sunucudan bir mesaj alırsınız ve herhangi bir mesaj gönderirseniz sunucu tarafından otomatik olarak geri döndürülür.

4. http://127.0.0.1:2001/rest adresine bir http bağlantısı açın. REST sunucusundan basit bir yanıt görüntülenir.