FreeRTOSFreeRTOSWindows CmbedPosix CCFreeRTOS Presence API Reference for Realtime Apps

Go to Publish & Subscribe


Requires Presence add-on XRequires that the Presence add-on is enabled for your key. See this page on enabling add-on features on your keys:

http://www.pubnub.com/knowledge-base/discussion/644/how-do-i-enable-add-on-features-for-my-keys.
You can obtain information about the current state of a channel including a list of unique user-ids currently subscribed to the channel and the total occupancy count of the channel by calling the pubnub_here_now() function in your application.
To call Here Now you can use the following method(s) in the FreeRTOS SDK:
  1. ParameterTypeRequiredDescription
    ppubnub_t*YesPointer to Pubnub client context.
    channelconst char*OptionalThe string with the channel name (or comma-delimited list of channel names) to get presence info for.
    channel_groupconst char*OptionalThe string with the channel name (or comma-delimited list of channel group names) to get presence info for.
// Sync
char const *chan = "my_channel";
char const *msg;
enum pubnub_res res;
  
res = pubnub_here_now(pn, chan, NULL);
if (res != PNR_STARTED) {
  return -1;
}
  
res = pubnub_await(pn);
if (res == PNR_STARTED) {
  return -1;
}
  
if (PNR_OK == res) {
  msg = pubnub_get(pn);
  // Print out, on Windows simulator `puts(msg)` should work
} else {
  return -1;
}
  
return 0;
  
  
//callback
  
int start_here_now(pubnub_t *pn) {
  char const *chan = "my_channel";
  if (PNR_STARTERD != pubnub_here_now(pn, chan, NULL)) {
    return -1;
  }
  return 0;
}
int receive_here_now(pubnub_t *pn, enum pubnub_res res) {
  char const *msg;
  if (res == PNR_STARTED) {
    return -1;
  }
  
  if (PNR_OK == res) {
    msg = pubnub_get(pn);
  // Print out, on Windows simulator `puts(msg)` should work
  } else {
    return -1;
  }
  
  return 0;
}
The pubnub_here_now() function returns a list of uuid s currently subscribed to the channel.
  • uuids:["String","String", ... ,"String"] - List of UUIDs currently subscribed to the channel.
  • occupancy: Number - Total current occupancy of the channel.
{
	occupancy : 4,
	uuids : ['123123234t234f34fq3dq', '143r34f34t34fq34q34q3', '23f34d3f4rq34r34rq23q', 'w34tcw45t45tcw435tww3']
}
Return Occupancy for all channels by calling the pubnub_global_here_now() function in your application.
To call Global Here Now you can use the following method(s) in the FreeRTOS SDK:
  1. ParameterTypeRequiredDescription
    ppubnub_t*YesPointer to Pubnub Client Context. Can't be NULL
// Sync
 
char const *msg;
enum pubnub_res res;
 
res = pubnub_global_here_now(pn);
if (res != PNR_STARTED) {
  return -1;
}
 
res = pubnub_await(pn);
if (res == PNR_STARTED) {
  return -1;
}
 
if (PNR_OK == res) {
  msg = pubnub_get(pn);
  // Print out, on Windows simulator `puts(msg)` should work
} else {
  return -1;
}
 
return 0;
 
// Callback
 
int start_global_here_now(pubnub_t *pn) {
    if (pubnub_global_here_now(pn) != PNR_STARTED) {
        return -1;
    }
    return 0;
}
int received_global_here_now(pubnub_t *pn,enum pubnub_res res) {
  if (PNR_OK == res) {
    char const *msg = pubnub_get(pn);
  // Print out, on Windows simulator `puts(msg)` should work
  } else {
    return -1;
  }
 
  return 0;
}
{
	"status": 200,
	"message": "OK",
	"payload": {
		"channels": {
			"81d8d989-b95f-443c-a726-04fac323b331": {
				"uuids": [
					"70fc1140-22b5-4abc-85b2-ff8c17b24d59"
				],
				"occupancy": 1
			},
			"81b7a746-d153-49e2-ab70-3037a75cec7e": {
				"uuids": [
					"91363e7f-584b-49cc-822c-52c2c01e5928"
				],
				"occupancy": 1
			},
			"c068d15e-772a-4bcd-aa27-f920b7a4eaa8": {
				"uuids": [
					"ccfac1dd-b3a5-4afd-9fd9-db11aeb65395"
				],
				"occupancy": 1
			}
		},
		"total_channels": 3,
		"total_occupancy": 3
	},
	"service": "Presence"
}
Requires Presence add-on XRequires that the Presence add-on is enabled for your key. See this page on enabling add-on features on your keys:

http://www.pubnub.com/knowledge-base/discussion/644/how-do-i-enable-add-on-features-for-my-keys.
You can obtain information about the current list of channels to which a UUID is subscribed to by calling the pubnub_where_now() function in your application.
 
If the app is killed/crashes and restarted (or the page containing the PubNub instance is refreshed on the browser) within the heartbeat window no timeout event is generated.
To call pubnub_where_now() you can use the following method(s) in the FreeRTOS SDK:
  1. ParameterTypeRequiredDescription
    ppubnub_t*YesPointer to Pubnub client context.
    uuidconst char*OptionalThe UUID of the user to get the channel presence. If NULL, the current UUID of the p context will be used.
You simply need to define the uuid and the callback function to be used to send the data to as in the example below.
// Sync
 
char const *msg;
enum pubnub_res res;
 
res = pubnub_where_now(pn, "my_uuid");
if (res != PNR_STARTED) {
  return -1;
}
 
res = pubnub_await(pn);
if (res == PNR_STARTED) {
  return -1;
}
 
if (PNR_OK == res) {
  msg = pubnub_get(pn);
  // Print out, on Windows simulator `puts(msg)` should work
} else {
  return -1;
}
 
return 0;

 
// Callback
 
int start_where_now(pubnub_t *pn) {
  return PNR_STARTED == pubnub_where_now(pn, "my_uuid") ? 0 : -1;
}
int receive_where_now(pubnub_t *pn, enum pubnub_res res) {
  if (PNR_OK == res) {
    char const* msg = pubnub_get(pn);
  // Print out, on Windows simulator `puts(msg)` should work
  } else {
    return -1;
  }
  return 0;
}
The pubnub_where_now() function returns a list of channels a uuid is subscribed to.
  • channels:["String","String", ... ,"String"] - List of channels a uuid is subscribed to.
{
	"channels": [
		"lobby",
		"game01",
		"chat"
	]
}
Requires Presence add-on XRequires that the Presence add-on is enabled for your key. See this page on enabling add-on features on your keys:

http://www.pubnub.com/knowledge-base/discussion/644/how-do-i-enable-add-on-features-for-my-keys.
The state API is used to set/get key/value pairs specific to a subscriber uuid.
State information is supplied as a JSON object of key/value pairs.
  1. ParameterTypeRequiredDescription
    ppubnub_t*YesPointer to Pubnub client context.
    channelchar const*OptionalThe string with the channel name (or comma-delimited list of channel names) to set state for.
    channel_groupchar const*OptionalThe string with the channel name (or comma-delimited list of channel group names) to set state for.
    uuidconst char*YesThe UUID of the user for which to set state for. If NULL, the current UUID of the p context will be used.
    statechar const*YesHas to be a JSON object
  1. ParameterTypeRequiredDescription
    ppubnub_t*YesPointer to Pubnub Client Context
    channelchar const*OptionalThe string with the channel name (or comma-delimited list of channel names) to get the state for.
    channel_groupchar const*OptionalThe string with the channel name (or comma-delimited list of channel group names) to get the state for.
    uuidconst char*OptionalThe UUID of the user for which to get the state for. If NULL, the current UUID of the p context will be used.
pubnub_set_state(ctx, "hello_world", NULL, NULL, NULL);
pbresult = pubnub_await(ctx);
if (PNR_OK == pbresult) {
    printf("Set success\n");
}
pubnub_get_state(ctx, "my_channel", NULL, NULL);
pbresult = pubnub_await(ctx);
if (PNR_OK == pbresult) {
    char const *json_response = pubnub_get(ctx);
}
The state API returns a JSON object containing key value pairs.
{
	first   : "Robert",
	last    : "Plant",
	age     : 59,
	region  : "UK"
}

Go to Channel Groups