TsgcWebSocketClient › Yöntemler › WriteAndWaitData
Bir metin mesajı gönderir ve sunucu bir metin mesajıyla yanıt verene veya zaman aşımı süresi geçene kadar çağıranı bloke eder.
function WriteAndWaitData(const aText: String; const aTimeout: Integer = 10000): string;
| Name | Type | Açıklama |
|---|---|---|
aText | const String | Sunucuya bir WebSocket metin çerçevesi olarak gönderilecek metin yükü. |
aTimeout |
const Integer | Sunucu yanıtını beklemek için milisaniye cinsinden maksimum süre. Varsayılan 10000'dir (10 saniye). |
Sunucudan alınan metin mesajı veya zaman aşımı dolduğunda, kullanılabilir bağlantı olmadığında ya da bir hata oluştuğunda boş bir dize. (string)
WriteAndWaitData, bir WebSocket üzerinden istek/yanıt tarzı alışverişler için kullanışlı bir yardımcıdır. Metin çerçevesini gönderir ve ardından sunucudan bir sonraki metin mesajı gelene veya zaman aşımı tetiklenene kadar çağıran iş parçacığını dahili bir olay üzerinde engeller. Engellediği için, kısa bir zaman aşımı kullanılmadıkça ana UI iş parçacığından çağrılmamalıdır. İstemci bağlı olmadığında veya sunucu zamanında yanıt vermediğinde boş bir dize döndürülür; soket seviyesindeki istisnalar yakalanır ve OnError öğesine iletilir. İkili yükleri göndermeniz ve almanız gerektiğinde stream aşırı yüklemesini kullanın.
vReply := oClient.WriteAndWaitData('ping', 5000);
if vReply <> '' then
ShowMessage(vReply);
function WriteAndWaitData(const aStream: TStream; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone; const aTimeout: Integer = 10000) : TStream;
| 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 giden 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. |
aTimeout |
const Integer | Sunucu yanıtını beklemek için milisaniye cinsinden maksimum süre. Varsayılan 10000'dir (10 saniye). |
Sunucudan alınan ikili mesajı içeren yeni ayrılmış bir akış veya zaman aşımı dolduğunda, bağlantı kullanılamadığında ya da bir hata oluştuğunda nil. Döndürülen akışı serbest bırakmaktan çağıran sorumludur. (TStream)
Bu aşırı yükleme, metin diğer aşırı yüklemesinin ikili karşılığıdır. Sağlanan stream'i bir ikili çerçeve olarak yazar ve ardından sunucudan bir sonraki ikili mesaj gelene veya zaman aşımı tetiklenene kadar çağıran iş parçacığını dahili bir olay üzerinde bloke eder. Bloke ettiği için, ana UI iş parçacığından uzun bir zaman aşımıyla çağırmaktan kaçının. İstemci bağlı değilse veya sunucu zamanında yanıt vermezse dönüş değeri nil'dir; istisnalar yakalanır ve OnError'a iletilir. İşiniz bittiğinde hem kaynak stream'i (çağrıdan sonra) hem de döndürülen stream'i serbest bırakın.
oRequest := TMemoryStream.Create;
try
oRequest.LoadFromFile('request.bin');
oReply := oClient.WriteAndWaitData(oRequest, 0, stmNone, 5000);
try
if Assigned(oReply) then
oReply.SaveToFile('reply.bin');
finally
oReply.Free;
end;
finally
oRequest.Free;
end;