Skip to content

Publish Custom Type

The example demonstrates publishing a value of a custom type (Person) and creating a subscriber to receive objects of that type. The message is published into the demo channel.

Subscriber

Important

Make sure to replace xxxx in the domain name in the sample requests below to the one assigned to your application.

Establishing a subscription

Request:

curl -H Content-Type:application/json -X POST -d '{}' \
-v https://xxxx.backendless.app/messaging/demo/subscribe
Response:
{
  "subscriptionId" : "1111-1111-1111-11111"
}

Retrieving messages

Request:

curl -X GET 
-v https://xxxx.backendless.app/messaging/demo/1111-1111-1111-11111
Response:
{
  "messages": [
    {
      "headers": {
        "DSId": "6523B3EE-FF53-8A3F-FF81-984B64A09B00",
        "DSDstClientId": "539D97CD-BA01-4B62-FF70-F95587987E00",
        "BL_APPLICATION_ID": "APP-ID"
      },
      "publisherId": null,
      "data": {
        "name": "Joe",
        "age": 30
      },
      "publishedAt": 1524682836224,
      "messageId": "message:04C39082-AF7F-342F-FF99-E3F71D36E700"
    }
  ]
}

Publisher

curl -X POST \
  https://api.backendless.com/APP-ID/REST-API-KEY/messaging/demo \
  -H 'content-type: application/json' \
  -d '{  "message": { "name":"Joe", "age":30}}'
function Person() {

}

var personObj = new Person();
personObj.name = "Joe";
personObj.age = 30;

Backendless.Messaging.publish( "demo", personObj )
 .then( function( result ) {
    console.log( "message has been published" );
  })
 .catch( function( error ) {
    console.log( "error publishing the message - " + error );
  })
public class Person
{
  // can also use getter/setter methods 
  // instead of public fields
  public String name;
  public int age;
}

Person personObject = new Person();
personObject.name = "Joe";
personObject.age = 30;

Backendless.Messaging.publish( "demo", 
                               personObject, 
                               new AsyncCallback<MessageStatus>()
{
  @Override
  public void handleResponse( MessageStatus response )
  {
    Log.i( "MYAPP", "Message has been published" );  
  }

  @Override
  public void handleFault( BackendlessFault fault )
  {
    Log.e( "MYAPP", "Error publishing the message" );
  }
} );
let person = Person()
person.name = "Joe"
person.age = 30

Backendless.shared.messaging.publish(channelName: "demo", message: person, responseHandler: { messageStatus in
    print("Message has been published")
}, errorHandler: { fault in
    print("Error: \(fault.message ?? "")")
})
Person *person = [Person new];
person.name = @"Joe";
person.age = @30;

[Backendless.shared.messaging publishWithChannelName:@"demo" message:person responseHandler:^(MessageStatus *messageStatus) {
    NSLog(@"Message has been published");
} errorHandler:^(Fault *fault) {
    NSLog(@"Error: %@", fault.message);
}];
public class Person
{
  // can also use get/set properties 
  // instead of public fields
  public string name;
  public int age;
}

Person personObject = new Person();
personObject.Name = "Joe";
personObject.Age = 30;

AsyncCallback<MessageStatus> callback = new AsyncCallback<MessageStatus>(
   messageStatus =>
   {
     Console.WriteLine( $"message has been published {messageStatus.MessageId}"); 
   },
   fault =>
   {
     Console.WriteLine( $"error {fault.Message}");
   } 
);

Backendless.Messaging.Publish( "demo", 
                               personObject, 
                               callback );
@reflector
class Person {
  String name;
  int age;
}

Person personObject = new Person()
  ..name = "Joe"
  ..age = 30;
Backendless.messaging.publish(personObject, channelName: "demo").then((response) {
  print("Message has been published");
});