TsgcWebSocketHTTPServer › 메서드 › WriteData
연결 GUID로 식별되는 단일 클라이언트에 WebSocket 메시지를 전송합니다.
function WriteData(const aGuid, aMessage: string): Boolean;
| Name | Type | 설명 |
|---|---|---|
aGuid | const string | 클라이언트 핸드셰이크가 완료되었을 때 서버가 할당한 대상 연결의 식별자입니다. |
aMessage | const string | WebSocket 텍스트 프레임으로 해당 클라이언트에 전달할 텍스트 페이로드입니다. |
주어진 GUID를 가진 연결이 발견되어 프레임이 해당 소켓에 전달되면 True, 일치하는 활성 연결이 없으면 False입니다. (Boolean)
이 오버로드는 GUID가 aGuid와 일치하는 WebSocket 연결을 조회하여 해당 단일 클라이언트에게 텍스트 메시지를 보냅니다. GUID는 TsgcWSConnection.Guid가 노출하는 값으로, 일반적으로 OnConnect에서 캡처되어 애플리케이션이 저장합니다. 업그레이드된 WebSocket 세션만 대상이 될 수 있습니다. 순수 HTTP 요청에 속한 GUID는 거부되며 False가 반환됩니다. QueueOptions.Text가 qmNone 이외의 값으로 설정되면 프레임이 큐에 대기되어 호출자 스레드가 아닌 연결 스레드에서 디스패치됩니다(IOHandlerOptions.IOHandlerType = iohIOCP일 때는 지원되지 않음). 한 번의 호출로 모든 활성 클라이언트에 도달하려면 Broadcast를 사용하십시오.
oServer.WriteData('guid', 'My First sgcWebSockets Message!.');
function WriteData(const aGuid: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;
| Name | Type | 설명 |
|---|---|---|
aGuid | const String | 클라이언트 핸드셰이크가 완료되었을 때 서버가 할당한 대상 연결의 식별자입니다. |
aStream | TStream | 내용이 WebSocket 바이너리 프레임으로 클라이언트에게 전송되는 소스 스트림입니다. 호출자가 스트림의 소유자로 유지됩니다. |
aSize | Integer | 선택적 조각 크기(바이트)입니다. 0보다 큰 경우 스트림이 이 크기의 여러 조각으로 분할됩니다. 전체 스트림을 단일 프레임으로 보내려면 0(기본값)을 사용하십시오. |
aStreaming | const TwsStreaming | 프래그먼트 전송을 위한 스트리밍 모드(stmNone, stmStart, stmContinue, stmFinish)입니다. 기본값은 stmNone으로, 완전한 독립 실행형 메시지를 보냅니다. |
지정된 GUID를 가진 연결이 위치하여 스트림이 해당 소켓에 전달된 경우 True이고, 일치하는 활성 연결이 없으면 False입니다. (Boolean)
이 오버로드는 제공된 스트림에서 읽은 바이너리 페이로드로 단일 WebSocket 클라이언트를 대상으로 합니다. 스트림은 현재 위치에서 소비되며 서버가 소유권을 가져가지 않으므로, 호출자는 WriteData가 반환될 때까지(또는 큐에 대기 중일 때는 전송이 완료될 때까지) 스트림을 유지해야 합니다. QueueOptions.Binary가 qmNone 이외의 값으로 설정되면 프레임이 큐에 대기되어 호출자 스레드가 아닌 연결 스레드에서 디스패치됩니다(IOHandlerOptions.IOHandlerType = iohIOCP일 때는 지원되지 않음). 여러 WebSocket 프레임에 걸쳐 단편화되어야 하는 매우 큰 페이로드를 보낼 때는 aSize를 aStreaming과 함께 사용하십시오.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;