TsgcWSPClient_sgc › メソッド › Subscribe
クライアントをカスタムチャンネルにサブスクライブします。
procedure Subscribe(const aChannel: String; const aGuid: String = '');
| 名前 | タイプ | 説明 |
|---|---|---|
aChannel | const String | サブスクライブするチャネルの名前。 |
aGuid | const String | ターゲットのサーバー側 sgc プロトコルインスタンスのオプション GUID。デフォルトを使用するには空のままにしてください。 |
指定されたチャンネルへの購読リクエストを送信します。サーバーが購読を確認すると、OnSubscriptionイベントが発火します。購読後、チャンネルにパブリッシュされたメッセージはOnEventを通じて配信されます。
aChannel はサーバーによって完全一致文字列として照合されます。topic1/# や topic1/+ のような MQTT スタイルのワイルドカードは解釈されず、チャンネル名の一部としてそのまま文字として扱われます。そのため、topic1/# をサブスクライブしたクライアントは、topic1/sensorA にパブリッシュされたメッセージを受信しません。
1回の呼び出しで複数のチャンネルをサブスクライブするには、カンマで区切ります。
oProtocol.Subscribe('topic1/a,topic1/b,topic1/c');
カンマはリストの区切り文字であるため、チャンネル名の一部として使用することはできません。同じカンマ区切りの構文は、UnSubscribe、および Broadcast と Publish のチャンネル引数、exclude 引数、include 引数にも適用されます。
サーバー側では、完全一致の代わりにマスクマッチング(* と ?、MQTT 構文ではありません)を使用してチャンネル引数を展開するように任意で設定できます。TsgcWSPServer_sgc.UseMatchesMask を参照してください。# と + のセマンティクスを持つ本来の MQTT トピックフィルターが必要な場合は、代わりに TsgcWSPClient_MQTT を使用してください。
oProtocol.Subscribe('news');
// multiple channels in one call
oProtocol.Subscribe('topic1/a,topic1/b,topic1/c');