TsgcWebSocketServer_HTTPAPI › Yöntemler › WriteData
Bağlantı GUID'siyle tanımlanan tek bir istemciye bir mesaj gönderir.
function WriteData(const aGUID, aMessage: string): Boolean;
| Name | Type | Açıklama |
|---|---|---|
aGUID | const string | İstemci handshake'i tamamlandığında sunucu tarafından atanan hedef bağlantının tanımlayıcısı. |
aMessage | const string | O istemciye bir WebSocket metin çerçevesi olarak teslim edilecek metin yükü. |
Verilen GUID ile bir bağlantı bulunduğunda ve çerçeve HTTP.sys soketine teslim edildiğinde True; eşleşen etkin bağlantı olmadığında False. (Boolean)
Bu aşırı yükleme, GUID'i aGUID ile eşleşen bağlantıyı arar ve metin mesajını o tek istemciye gönderir. GUID, TsgcWSConnection.Guid tarafından sunulan değerdir, tipik olarak OnConnect içinde yakalanır ve uygulama tarafından saklanır. QueueOptions.Text, qmNone dışında bir değere ayarlandığında, çerçeve sıraya alınır ve çağıranın iş parçacığı yerine bağlantı iş parçacığından gönderilir, bu da birden çok iş parçacığının aynı istemciye gönderim yaptığında kilitlenmeleri önler. Asynchronous etkinleştirildiğinde, yöntem HTTP.sys çerçeveyi yazmayı bitirmeden önce döner; tamamlanma OnAsynchronous aracılığıyla raporlanır. Tek bir çağrıda her etkin istemciye ulaşmak için Broadcast kullanın.
oServer.WriteData('guid', 'My First sgcWebSockets Message!.');
function WriteData(const aGUID: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;
| Name | Type | Açıklama |
|---|---|---|
aGUID | const String | İstemci handshake'i tamamlandığında sunucu tarafından atanan hedef bağlantının tanımlayıcısı. |
aStream | TStream | İçeriği istemciye bir WebSocket ikili çerçevesi olarak gönderilen kaynak akışı. Çağıran, akışın sahibi olmaya devam eder. |
aSize | 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. |
True verilen GUID'e sahip bir bağlantı bulunduğunda ve stream onun HTTP.sys soketine teslim edildiğinde; False eşleşen etkin bir bağlantı olmadığında. (Boolean)
Bu aşırı yükleme, sağlanan stream'den okunan ikili bir yükle tek bir istemciyi hedefler. Stream, geçerli konumundan tüketilir ve sunucu sahipliği almaz, bu nedenle çağıran, WriteData dönene kadar (veya kuyruğa alındığında ya da Asynchronous etkinleştirildiğinde, gönderim gerçekten tamamlanana kadar) onu canlı tutmalıdır. QueueOptions.Binary öğesi qmNone dışında bir değere ayarlandığında çerçeve kuyruğa alınır ve çağıranın iş parçacığı yerine bağlantı iş parçacığından gönderilir. HTTP.sys'de aşırı büyük tek bir mesaj olarak arabelleğe alınmak yerine birden çok WebSocket çerçevesi arasında parçalanması gereken çok büyük yükler gönderirken aSize öğesini aStreaming ile birlikte kullanın.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;