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çar2. 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.
