TsgcWebSocketClient › Yöntemler › WriteData
WebSocket sunucusuna bir metin mesajı gönderir, isteğe bağlı olarak belirli bir boyutta parçalara bölerek.
procedure WriteData(const aText: String; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Name | Type | Açıklama |
|---|---|---|
aText | const String | Sunucuya bir WebSocket metin çerçevesi olarak gönderilecek metin yükü. |
aSize |
const Integer | İsteğe bağlı bayt cinsinden parça boyutu; sıfırdan büyük olduğunda mesaj bu boyutta birden çok parçaya bölünür. Tüm mesajı tek bir çerçeve olarak göndermek için 0 (varsayılan) kullanın. |
aStreaming | const TwsStreaming | Parçalı iletim için akış modu (stmNone, stmStart, stmContinue, stmFinish). Tam, bağımsız bir mesaj gönderen stmNone varsayılandır. |
WriteData, dizeyi etkin bağlantıda bir WebSocket metin çerçevesi olarak iletir. Varsayılan olarak çağrı, çağıran iş parçacığında çalışır ve baytlar sokete teslim edildikten sonra geri döner. QueueOptions.Text değeri qmNone dışında bir değere ayarlandığında, mesaj kuyruğa alınır ve aslında bağlantının kendi iş parçacığından gönderilir, bu da birkaç iş parçacığı eşzamanlı olarak yazdığında kilitlenmeleri önler. Herhangi bir soket istisnası OnError olayına iletilir. Büyük yükler veya ikili veriler gönderirken akış aşırı yüklemesini kullanın.
İstemci bağlı değilken veya WebSocket handshake'i henüz tamamlanmamışken hiçbir şey gönderilmez ve hata, Connection = nil ile birlikte OnError üzerinden ve Data not sent, the client is not connected or its handshake has not completed. hatasıyla (resourcestring S_ERROR_CLIENT_NOT_CONNECTED) bildirilir. Olay, WriteData geri dönmeden önce çağıran iş parçacığında tetiklenir ve LastError aynı metni tutar. Çağırana herhangi bir istisna fırlatılmaz ve istemcinin bağlantısı kesilmez. Bu bildirimi atlayıp mesajı önceki sürümlerin yaptığı gibi sessizce düşürmek için Options.RaiseDisconnectExceptions öğesini False olarak ayarlayın. Bağlantısı koptuğu için bir yazma başarısız olduğunda ve istemci zaten yeniden bağlanmışsa, hata da Connection = nil ile bildirilir, böylece yeni bağlantı açık kalır.
oClient.WriteData('My First sgcWebSockets Message!.');
procedure WriteData(const aStream: TStream; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Name | Type | Açıklama |
|---|---|---|
aStream | const TStream | İçeriği bir WebSocket ikili çerçevesi olarak gönderilecek kaynak akış. Akışın sahipliği çağırana ait kalır. |
aSize |
const Integer | İsteğe bağlı bayt cinsinden parça boyutu; sıfırdan büyük olduğunda akış bu boyutta birden çok parçaya bölünür. Tüm akışı tek bir çerçeve olarak göndermek için 0 (varsayılan) kullanın. |
aStreaming | const TwsStreaming | Parçalı iletim için akış modu (stmNone, stmStart, stmContinue, stmFinish). Tam, bağımsız bir mesaj gönderen stmNone varsayılandır. |
WriteData, sağlanan akışı mevcut konumundan okur ve içeriği bir WebSocket ikili çerçevesi olarak iletir. Çağrı varsayılan olarak çağıran iş parçacığında çalışır; QueueOptions.Binary qmNone dışında bir değere ayarlandığında, mesaj kuyruğa alınır ve gerçekte bağlantı iş parçacığından gönderilir. Soket istisnaları yakalanıp OnError'a iletilir. İstemci bağlı değilken veya handshake'i henüz tamamlanmamışken hiçbir şey gönderilmez ve hata, metin aşırı yüklemesi için açıklandığı gibi Connection = nil ile OnError üzerinden bildirilir. Akışı yalnızca çağrı döndükten sonra (veya kuyruğa alırken, gönderim tamamlandıktan sonra) serbest bırakın.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oClient.WriteData(oStream);
finally
oStream.Free;
end;