TsgcWebSocketServer_HTTPAPI메서드 › WriteData

WriteData Method

연결 GUID로 식별되는 단일 클라이언트에 메시지를 보냅니다.

Overloads

오버로드 1

구문

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

Parameters

NameType설명
aGUIDconst string클라이언트 핸드셰이크가 완료되었을 때 서버가 할당한 대상 연결의 식별자입니다.
aMessageconst stringWebSocket 텍스트 프레임으로 해당 클라이언트에 전달할 텍스트 페이로드입니다.

반환 값

지정된 GUID의 연결이 발견되어 프레임이 해당 HTTP.sys 소켓에 전달된 경우 True이며, 일치하는 활성 연결이 없으면 False입니다. (Boolean)

설명

이 오버로드는 GUID가 aGUID와 일치하는 연결을 조회하고 해당 단일 클라이언트에게 텍스트 메시지를 보냅니다. GUID는 TsgcWSConnection.Guid가 노출하는 값으로, 일반적으로 OnConnect에서 캡처되어 애플리케이션에 의해 저장됩니다. QueueOptions.Text가 qmNone이 아닌 값으로 설정되면 프레임이 큐에 추가되어 호출자의 스레드가 아닌 연결 스레드에서 디스패치되므로, 여러 스레드가 동일한 클라이언트에게 전송할 때 잠금을 방지합니다. Asynchronous가 활성화되면 HTTP.sys가 프레임 쓰기를 완료하기 전에 메서드가 반환됩니다. 완료는 OnAsynchronous를 통해 보고됩니다. 한 번의 호출로 모든 활성 클라이언트에 도달하려면 Broadcast를 사용하십시오.

예제


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

Overload 2

구문

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

Parameters

NameType설명
aGUIDconst String클라이언트 핸드셰이크가 완료되었을 때 서버가 할당한 대상 연결의 식별자입니다.
aStreamTStream내용이 WebSocket 바이너리 프레임으로 클라이언트에게 전송되는 소스 스트림입니다. 호출자가 스트림의 소유자로 유지됩니다.
aSizeInteger선택적 조각 크기(바이트)입니다. 0보다 큰 경우 스트림이 이 크기의 여러 조각으로 분할됩니다. 전체 스트림을 단일 프레임으로 보내려면 0(기본값)을 사용하십시오.
aStreamingconst TwsStreaming프래그먼트 전송을 위한 스트리밍 모드(stmNone, stmStart, stmContinue, stmFinish)입니다. 기본값은 stmNone으로, 완전한 독립 실행형 메시지를 보냅니다.

반환 값

지정된 GUID를 가진 연결이 발견되고 스트림이 해당 HTTP.sys 소켓으로 전달된 경우 True입니다. 일치하는 활성 연결이 없는 경우 False입니다. (Boolean)

설명

이 오버로드는 제공된 스트림에서 읽은 바이너리 페이로드로 단일 클라이언트를 대상으로 합니다. 스트림은 현재 위치에서 소비되며 서버는 소유권을 갖지 않으므로, 호출자는 WriteData가 반환될 때까지(또는 큐잉 시 또는 Asynchronous가 활성화된 경우 전송이 실제로 완료될 때까지) 이를 유지해야 합니다. QueueOptions.Binary가 qmNone 이외의 값으로 설정되면 프레임은 큐에 들어가 호출자의 스레드가 아닌 연결 스레드에서 디스패치됩니다. HTTP.sys에서 하나의 과도하게 큰 메시지로 버퍼링되는 대신 여러 WebSocket 프레임으로 분할되어야 하는 매우 큰 페이로드를 보낼 때 aSizeaStreaming과 함께 사용하십시오.

예제


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

메서드로 돌아가기