TsgcWebSocketClient › メソッド › WriteData
WebSocket サーバーにテキストメッセージを送信します。オプションで指定したサイズのフラグメントに分割できます。
procedure WriteData(const aText: String; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| 名前 | タイプ | 説明 |
|---|---|---|
aText | const String | WebSocketテキストフレームとしてサーバーへ送信するテキストペイロードです。 |
aSize | const Integer | オプションのフラグメントサイズ(バイト単位)。ゼロより大きい場合、メッセージはこのサイズの複数のフラグメントに分割されます。メッセージ全体を単一フレームとして送信するにはデフォルトの 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);
| 名前 | タイプ | 説明 |
|---|---|---|
aStream | const TStream | 内容が WebSocket バイナリフレームとして送信されるソースストリーム。呼び出し元はストリームのオーナーのままです。 |
aSize | const Integer | オプションのフラグメントサイズ (バイト単位)。ゼロより大きい場合、ストリームはこのサイズの複数のフラグメントに分割されます。ストリーム全体を単一のフレームとして送信するにはデフォルトの 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;