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.