TsgcWebSocketServer | Server empfängt Binärnachricht

Wenn der Server eine Binärnachricht empfängt, wird das Ereignis OnBinary ausgelöst. Lesen Sie den Parameter Data, um die empfangene Binärnachricht abzurufen.


procedure OnBinary(Connection: TsgcWSConnection; const Data: TMemoryStream);
var
  oBitmap: TBitmap;
begin
  oBitmap := TBitmap.Create;
  Try
    oBitmap.LoadFromStream(Data);
    Image1.Picture.Assign(oBitmap);
    Log(
      '#image uncompressed size: ' + IntToStr(Data.Size) +
      '. Total received: ' + IntToStr(Connection.RecBytes));
  Finally
    FreeAndNil(oBitmap);
  End;
end;

Standardmäßig verwendet der Server die Methode neAsynchronous, um das OnMessage-Ereignis zu dispatchen; das bedeutet, dass dieses Ereignis im Kontext des Haupt-Threads ausgeführt wird, sodass es threadsicher ist, beispielsweise ein beliebiges Steuerelement eines Formulars zu aktualisieren.

 

Wenn Ihr Server viele Nachrichten empfängt oder Sie die Synchronisierung mit anderen Threads steuern müssen, setzen Sie die Eigenschaft NotifyEvents auf neNoSync; dies bedeutet, dass das Ereignis OnMessage im Kontext des Verbindungs-Threads ausgeführt wird, sodass Sie, wenn Sie ein Steuerelement eines Formulars aktualisieren oder auf gemeinsam genutzte Objekte zugreifen müssen, Ihre eigenen Synchronisierungsmethoden implementieren müssen.