TsgcWebSocketServer | サーバーがバイナリメッセージを受信する

サーバーがバイナリメッセージを受信すると、OnBinary イベントが発生します。受信したバイナリメッセージを取得するには Data パラメータを読み取ってください。


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;

デフォルトでは、サーバーは OnMessage イベントをディスパッチするために neAsynchronous メソッドを使用します。これはこのイベントがメインスレッドのコンテキストで実行されることを意味し、フォームのコントロールを更新する際にスレッドセーフです。

 

サーバーが大量のメッセージを受信する場合、または他のスレッドとの 同期を制御する必要がある場合は、NotifyEventsプロパティをneNoSyncに設定します。これは、OnMessage イベントが接続スレッドのコンテキストで実行されることを意味します。そのため、 フォームのコントロールを更新したり、共有オブジェクトにアクセスしたりする必要がある場合は、独自の同期 メソッドを実装する必要があります。