A customer ask se TMS Sparkle e sgcWebSockets can esegui together, e il answer è yes, c'è no problem in esecuzione sgcWebSockets e TMS Sparkle su lo stesso server. Entrambi può esegui utilizzando server HTTP.SYS, you può esegui a single server HTTP.SYS e configura endpoints a esegui con Sparkle e sgcWebSockets senza problems. Basically tu configura in ogni package che endpoint handle.
sgcWebSockets può esegui in server HTTP.SYS attraverso HTTP API Server:
https://www.esegece.com/help/sgcWebSockets/#t=Components%2FTsgcWebSocketServer_HTTPAPI.htm
Trovi di seguito 2 samples che show come sgcWebSockets e TMS Sparkle può esegui su lo stesso server HTTP.SYS.
sgcWebSockets Sample
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');
mentre 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 Sample
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.
Compiled Samples
Follow il instructions below a esegui il samples:
1. Execute sgcWSServer come Administrator. apre a WebSocket server, listening su porta 2001 e endpoint "/ws"2. Execute HelloWorldServer. apre a REST server, listening su porta 2001 e endpoing "/rest"
3. Open a websocket connessione a ws://127.0.0.1:2001/ws. Tu ottenere a messaggio da server dopo connetti e se tu inviare qualsiasi messaggio essere restituito da server automatically.
4. Open a http connessione a http://127.0.0.1:2001/rest. A simple risposta da REST server essere shown.
