当客户端收到二进制消息时,将触发 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 事件将在连接线程的上下文中
执行,因此如果你需要更新
某个窗体的控件或访问共享对象,你必须实现自己
的同步方法。