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;

默认情况下,服务器使用 neAsynchronous 方式分发 OnMessage 事件,这意味着该事件在主线程上下文中执行,因此更新表单控件等操作是线程安全的。

 

如果您的服务器接收大量消息或需要控制与其他线程的同步,请将 NotifyEvents 属性设置为 neNoSync,这意味着 OnMessage 事件将在连接线程的上下文中执行,因此如果您需要更新窗体的任何控件或访问共享对象,必须实现自己的同步方法。