TsgcWebSocketClient › 메서드 › WriteData
선택적으로 지정된 크기의 단편으로 분할하여 WebSocket 서버에 텍스트 메시지를 보냅니다.
procedure WriteData(const aText: String; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Name | Type | 설명 |
|---|---|---|
aText | const String | WebSocket 텍스트 프레임으로 서버에 보낼 텍스트 페이로드입니다. |
aSize | const Integer | 선택적 프래그먼트 크기(바이트)입니다. 0보다 큰 경우 메시지가 이 크기의 여러 프래그먼트로 분할됩니다. 전체 메시지를 단일 프레임으로 보내려면 0(기본값)을 사용하십시오. |
aStreaming | const TwsStreaming | 프래그먼트 전송을 위한 스트리밍 모드(stmNone, stmStart, stmContinue, stmFinish)입니다. 기본값은 stmNone으로, 완전한 독립 실행형 메시지를 보냅니다. |
WriteData는 활성 연결에서 문자열을 WebSocket 텍스트 프레임으로 전송합니다. 기본적으로 호출은 호출 스레드에서 실행되며 바이트가 소켓에 전달되면 반환됩니다. QueueOptions.Text가 qmNone 이외의 값으로 설정되면, 메시지는 큐에 들어가고 실제로 연결 자체의 스레드에서 전송되어, 여러 스레드가 동시에 쓸 때 잠금을 방지합니다. 모든 소켓 예외는 OnError로 전달됩니다. 대용량 페이로드 또는 바이너리 데이터를 보낼 때는 스트림 오버로드를 사용하십시오.
클라이언트가 연결되지 않았거나 WebSocket 핸드셰이크가 아직 완료되지 않은 경우, 아무 데이터도 전송되지 않고 실패가 OnError를 통해 Connection = nil과 오류 Data not sent, the client is not connected or its handshake has not completed.(resourcestring S_ERROR_CLIENT_NOT_CONNECTED)로 보고됩니다. 이 이벤트는 WriteData가 반환되기 전에 호출 스레드에서 발생하며, LastError에도 동일한 텍스트가 저장됩니다. 호출자에게 예외가 발생하지 않으며 클라이언트도 연결이 끊어지지 않습니다. 이 보고를 건너뛰고 이전 버전처럼 메시지를 조용히 버리려면 Options.RaiseDisconnectExceptions를 False로 설정하십시오. 연결이 끊어져 쓰기가 실패했지만 클라이언트가 이미 재연결한 경우에도 실패는 Connection = nil로 보고되므로 새 연결은 그대로 유지됩니다.
oClient.WriteData('My First sgcWebSockets Message!.');
procedure WriteData(const aStream: TStream; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Name | Type | 설명 |
|---|---|---|
aStream | const TStream | 내용이 WebSocket 바이너리 프레임으로 전송될 소스 스트림입니다. 호출자는 스트림의 소유자로 남습니다. |
aSize | const Integer | 선택적 조각 크기(바이트)입니다. 0보다 큰 경우 스트림이 이 크기의 여러 조각으로 분할됩니다. 전체 스트림을 단일 프레임으로 보내려면 0(기본값)을 사용하십시오. |
aStreaming | const TwsStreaming | 프래그먼트 전송을 위한 스트리밍 모드(stmNone, stmStart, stmContinue, stmFinish)입니다. 기본값은 stmNone으로, 완전한 독립 실행형 메시지를 보냅니다. |
WriteData는 제공된 스트림을 현재 위치에서 읽어 그 내용을 WebSocket 바이너리 프레임으로 전송합니다. 호출은 기본적으로 호출 스레드에서 실행됩니다. QueueOptions.Binary가 qmNone 이외의 값으로 설정되면 메시지가 큐에 들어가 실제로 연결 스레드에서 디스패치됩니다. 소켓 예외는 포착되어 OnError로 전달됩니다. 클라이언트가 연결되지 않았거나 핸드셰이크가 아직 완료되지 않은 경우, 아무 데이터도 전송되지 않고 텍스트 오버로드에서 설명한 대로 실패가 Connection = nil과 함께 OnError를 통해 보고됩니다. 호출이 반환된 후(또는 큐잉하는 경우 전송이 완료된 후)에만 스트림을 해제하십시오.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oClient.WriteData(oStream);
finally
oStream.Free;
end;