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

Establishing a subscription

Request:

curl -H Content-Type:application/json -X POST -d '{}' \
-v https://api.backendless.com/APP-ID/REST-API-KEY/messaging/demo/subscribe
Response:
{
  "subscriptionId" : "1111-1111-1111-11111"
}

Retrieving messages

Request:

curl -X GET 
-v https://api.backendless.com/APP-ID/REST-API-KEY/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");
});