TsgcWebSocketClient | Odbieranie wiadomości binarnych

Gdy klient odbierze wiadomość binarną, wywoływane jest zdarzenie OnBinary. Należy odczytać parametr Data, aby pobrać odebraną wiadomość binarną.


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;

Domyślnie klient używa metody neAsynchronous do wysyłania zdarzenia OnMessage, co oznacza, że to zdarzenie jest wykonywane w kontekście wątku głównego, więc jest bezpieczne wątkowo aktualizowanie na przykład dowolnej kontrolki formularza.

 

Jeśli klient odbiera wiele wiadomości lub konieczna jest kontrola synchronizacji z innymi wątkami, należy ustawić właściwość NotifyEvents na neNoSync. Oznacza to, że zdarzenie OnMessage będzie wykonywane w kontekście wątku połączenia, więc jeśli wymagana jest aktualizacja kontrolek formularza lub dostęp do współdzielonych obiektów, należy zaimplementować własne metody synchronizacji.