この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

メッセージチャネルの購読および購読取り消し

メッセージチャネルの購読および購読取り消しを行うには、sforce.one.subscribe() メソッドと sforce.one.unsubscribe() メソッドを使用します。

github.com/trailheadapps/lwc-recipes リポジトリの lmsSubscriberVisualforceRemoting ページでは、メッセージチャネルへの登録、およびチャネルからの登録解除の方法が示されます。

次の例は、「メッセージングチャネルでの公開」の例の続きを示しており、それぞれのボタンをクリックしたときにメッセージチャネルの購読および購読取り消しを行うことができます。この JavaScript には、subscribeMC() メソッドと unsubscribeMC() メソッド、および textarea にメッセージ出力を設定する onMCPublished() があります。

カスタムメッセージチャネル $MessageChannel.SampleMessageChannel__c を変数 SAMPLEMC に読み込みます。$MessageChannel グローバル変数では、関連するメッセージチャネルの一意のトークンが作成されます。SAMPLEMC の下では、sforce.one.subscribe() メソッドから返された購読オブジェクトを保持する変数 subscriptionToMC が宣言されています。

subscribeMC() メソッドでは、購読オブジェクトが空であるかどうかがチェックされます。購読オブジェクトが空の場合は、sforce.one.subscribe() メソッドがコールされます。sforce.one.subscribe() には、購読メッセージチャネル onMCPublished() と、メッセージ出力を処理するメソッドの 2 つのパラメータがあります。

デフォルトでは、メッセージチャネル上で通信を行えるのは、アクティブなナビゲーションタブ、アクティブなナビゲーション項目、またはユーティリティ項目のコンポーネント間のみです。ユーティリティ項目は常に有効です。ナビゲーションタブまたはナビゲーション項目は、選択されると有効になります。ナビゲーションタブとナビゲーション項目には、以下が含まれます。
  • 標準ナビゲーションタブ
  • コンソールナビゲーションワークスペースタブ
  • コンソールナビゲーションのサブタブ
  • コンソールナビゲーション項目
メッセージチャネル上のメッセージをアプリケーション内の任意の場所から受信するには、sforce.one.subscribe() メソッドの 4 番目のパラメータ (省略可能)、subscriberOptions を使用します。subscriberOptionsscope の値を "APPLICATION" に設定します。
1sforce.one.subscribe(messageChannel, listener, {scope: "APPLICATION"});

unsubscribeMC() メソッドでは、購読オブジェクトの有無がチェックされます。購読オブジェクトが存在する場合は、sforce.one.unsubscribe() がコールされ、subscriptionToMC オブジェクトに渡されます。次に、subscriptionToMC オブジェクトがクリアされます。

onMCPublished() メソッドでは、JSON オブジェクトのメッセージペイロードが文字列に変換されます。次に、ID が MCMessageTextAreatextarea にメッセージが表示されます。

1<apex:page >
2    <div>
3        <p>Subscribe to SampleMessageChannel </p>
4        <button onclick="subscribeMC()">Subscribe</button>
5        <p>Unsubscribe from subscription</p>
6        <button onclick="unsubscribeMC()">Unsubscribe</button>
7        <br/>
8        <br/>
9        <p>Received message:</p>
10    <textarea id="MCMessageTextArea" rows="10" style="disabled:true;resize:none;width:100%;"/>
11    </div>
12
13    <script>
14        // Load the MessageChannel token in a variable
15        var SAMPLEMC = "{!$MessageChannel.SampleMessageChannel__c}";
16        var subscriptionToMC;
17
18        function onMCPublished(message) {
19            var textArea = document.querySelector("#MCMessageTextArea");
20            textArea.innerHTML = message ? JSON.stringify(message, null, '\t') : 'no message payload';
21        }
22
23        function subscribeMC() {
24            if (!subscriptionToMC) {
25                subscriptionToMC = sforce.one.subscribe(SAMPLEMC, onMCPublished);
26            }
27        }
28
29        function unsubscribeMC() {
30            if (subscriptionToMC) {
31                sforce.one.unsubscribe(subscriptionToMC);
32                subscriptionToMC = null;
33            }
34        }
35    </script>
36
37</apex:page>