TsgcWebSocketLoadBalancerServerYöntemler › WriteData

WriteData Yöntem

Tek bir istemciye, bağlantı GUID'siyle tanımlanan bir WebSocket mesajı gönderir; çerçeveyi oturuma sahip olan yedek sunucu üzerinden yönlendirir.

Aşırı Yüklemeler

Aşırı Yükleme 1

Sözdizimi

function WriteData(const aGuid, aMessage: string): Boolean;

Parametreler

NameTypeAçıklama
aGuidconst stringİstemci handshake'i tamamlandığında yedek sunucu tarafından atanan hedef bağlantının tanımlayıcısı.
aMessageconst stringO istemciye bir WebSocket metin çerçevesi olarak teslim edilecek metin yükü.

Dönüş Değeri

Verilen GUID'e sahip bir bağlantı kayıtlı bir yedek sunucuda bulunduğunda ve çerçeve onun soketine iletildiğinde True; cluster'da hiçbir yerde eşleşen etkin bağlantı olmadığında False. (Boolean)

Remarks

Bu aşırı yükleme, load balancer'dan GUID'i aGuid ile eşleşen WebSocket bağlantısının sahibi olan yedek sunucuyu bulmasını ister ve metin mesajını o tek istemciye iletir. GUID, TsgcWSConnection.Guid tarafından gösterilen, genellikle OnConnect içinde yakalanan ve uygulama tarafından saklanan değerdir. Yalnızca yükseltilmiş WebSocket oturumları uygundur; saf HTTP isteklerine ait GUID'ler reddedilir ve False döndürülür. QueueOptions.Text, 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 (IOHandlerOptions.IOHandlerType = iohIOCP olduğunda desteklenmez). Tek bir çağrıda kümedeki her etkin istemciye ulaşmak için Broadcast kullanın.

Örnek


oServer.WriteData('guid', 'My First sgcWebSockets Message!.');

Overload 2

Sözdizimi

function WriteData(const aGuid: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;

Parametreler

NameTypeAçıklama
aGuidconst Stringİstemci handshake'i tamamlandığında yedek sunucu tarafından atanan hedef bağlantının tanımlayıcısı.
aStreamTStreamİçeriği istemciye bir WebSocket ikili çerçevesi olarak gönderilen kaynak akışı. Çağıran, akışın sahibi olmaya devam eder.
aSizeIntegerİ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.
aStreamingconst TwsStreamingParçalı iletim için akış modu (stmNone, stmStart, stmContinue, stmFinish). Tam, bağımsız bir mesaj gönderen stmNone varsayılandır.

Dönüş Değeri

True, verilen GUID'e sahip bir bağlantı kayıtlı bir yedek sunucuda bulunduğunda ve akış soketine iletildiğinde; False, kümede herhangi bir yerde eşleşen etkin bir bağlantı olmadığında. (Boolean)

Remarks

Bu aşırı yükleme, sağlanan stream'den okunan ikili bir yük ile tek bir WebSocket istemcisini hedefler ve baytları yük dengeleyici aracılığıyla oturuma sahip olan yedek sunucuya yönlendirir. Stream, geçerli konumundan tüketilir ve yük dengeleyici sahipliği almaz, bu nedenle çağıran, WriteData dönene kadar (veya kuyruğa alırken gönderme tamamlanana kadar) onu canlı tutmalıdır. QueueOptions.Binary qmNone dışında bir değere ayarlandığında çerçeve kuyruğa alınır ve çağıranın thread'i yerine bağlantı thread'inden gönderilir (IOHandlerOptions.IOHandlerType = iohIOCP olduğunda desteklenmez). Birden çok WebSocket çerçevesi arasında parçalanması gereken çok büyük yükler gönderirken aSize değerini aStreaming ile birlikte kullanın.

Örnek


oStream := TMemoryStream.Create;
try
  oStream.LoadFromFile('payload.bin');
  oServer.WriteData('guid', oStream);
finally
  oStream.Free;
end;

Yöntemlere Dön