メッセージチャネルの購読および購読取り消し
例
次の例は、「メッセージングチャネルでの公開」の例の続きを示しており、それぞれのボタンをクリックしたときにメッセージチャネルの購読および購読取り消しを行うことができます。この JavaScript には、subscribeMC() メソッドと unsubscribeMC() メソッド、および textarea にメッセージ出���を設定する onMCPublished() があります。
カスタムメッセージチャネル $MessageChannel.SampleMessageChannel__c を変数 SAMPLEMC に読み込みます。$MessageChannel グローバル変数では、関連するメッセージチャネルの一意のトークンが作成されます。SAMPLEMC の下では、sforce.one.subscribe() メソッドから返された購読オブジェクトを保持する変数 subscriptionToMC が宣言されています。
subscribeMC() メソッドでは、購読オブジェクトが空であるかどうかがチェックされます。購読オブジェクトが空の場合は、sforce.one.subscribe() メソッドがコールされます。sforce.one.subscribe() には、購読メッセージチャネル onMCPublished() と、メッセージ出力を処理するメソッドの 2 つのパラメーターがあります。
- 標準ナビゲーションタブ
- コンソールナビゲーションワークスペースタブ
- コンソールナビゲーションのサブタブ
- コンソールナビゲーション項目
1sforce.one.subscribe(messageChannel, listener, {scope: "APPLICATION"});unsubscribeMC() メソッドでは、購読オブジェクトの有無がチェックされます。購読オブジェクトが存在する場合は、sforce.one.unsubscribe() がコールされ、subscriptionToMC オブジェクトに渡されます。次に、subscriptionToMC オブジェクトがクリアされます。
onMCPublished() メソッドでは、JSON オブジェクトのメッセージペイロードが文字列に変換されます。次に、ID が MCMessageTextArea の textarea にメッセージが表示されます。
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>