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.
In this 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.
<!-- myComponent.cmp -->
<aura:component>
<lightning:messageChannel type="SampleMessageChannel__c"/>
</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.
<!-- myComponent.cmp -->
<aura:component>
<lightning:button onclick="{! c.handleClick }"/>
<lightning:messageChannel type="SampleMessageChannel__c"
aura:id="sampleMessageChannel"/>
</aura:component>
// myComponentController.js
({
handleClick: function(cmp, event, helper) {
var payload = {
recordId: "some string",
recordData: {
value: "some value"
}
};
cmp.find("sampleMessageChannel").publish(payload);
}
})
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.
note: 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