Publish on a Message Channel

To publish a message on a message channel, include a lightning:messageChannel component in your Aura component and use the publish() method in your Aura component's controller file.

Example

The lmsPublisherAuraComponent from the github.com/trailheadapps/lwc-recipes repo shows how to publish a message to notify subscribers on a Lightning page when a contact is selected.

To reference a message channel, add the lightning:messageChannel component to your Aura component. The component has a required type attribute, which is the name of the message channel.

1<!-- myComponent.cmp -->
2<aura:component>
3    <lightning:messageChannel type="SampleMessageChannel__c"/>
4</aura:component>

To reference a message channel from an org that has a namespace, prefix the message channel name with the namespace: <lightning:messageChannel type="Namespace__MessageChannelName__c"/>.

This example shows how to publish a message on the SampleMessageChannel__c channel when a button is clicked.

In myComponent.cmp, we create two components, lightning:button and lightning:messageChannel. On lightning:button, the onclick handler calls the handleClick() JavaScript function in the controller. We assign the aura:id attribute to lightning:messageChannel to access the publish() method.

1<!-- myComponent.cmp -->
2<aura:component>
3    <lightning:button onclick="{! c.handleClick }"/>
4    <lightning:messageChannel type="SampleMessageChannel__c"
5        aura:id="sampleMessageChannel"/>
6</aura:component>
1// myComponentController.js
2({
3    handleClick: function(cmp, event, helper) {
4        var payload = {
5            recordId: "some string",
6            recordData: {
7                value: "some value"
8            }
9        };
10        cmp.find("sampleMessageChannel").publish(payload);
11    }
12})

In the controller, handleClick() contains the payload object. This object holds the message that gets sent on the SampleMessageChannel__c message channel. Here, the message is a recordId with the value "some string" and recordData, whose value is the key-value pair value: "some value". Then, the controller finds the lightning:messageChannel component referenced in myComponent.cmp and calls publish() with the payload.

Lightning message service publishes messages to any subscribed component until the destroy phase of the component's lifecycle, even if the component isn't visible. Sometimes when you navigate away from a Lightning page, components are cached and not destroyed. These components still receive messages. For more information, see lifecycle and related system events

Note