Concurrent Access Control
Overview
Concurrent access is access to content at the same time by multiple devices.
If you want to control the number of devices with concurrent access, you can use the following JSON RPC APIs:
They can be used with getAccessibleTags
and getAccessStatus
endpoints.
Register Concurrent Access
The registerConcurrentAccess
endpoint allows for registering the device identifier (a unique deviceId
; it can be an IP address) in order to limit concurrent access from multiple devices.
The provided identifier is added to the pool of identifiers and is kept in the pool for 3 hours. The current limit of identifiers in the pool is 4.
- If the number of identifiers exceeds the limit in the pool, a complementary API
verifyConcurrentAccess
takes away access rights to the content. - If the limit is not exceeded, access is granted.
For better access control, there is a possibility to provide an optional parameter contentGroup
. It instructs the system to create and keep a separate pool of device identifiers for it. Thanks to this you can build a more sophisticated concurrent access logic. If the parameter is not provided, the deviceId
is added to the global pool of devices.
Verify Concurrent Access
You need to call the verifyConcurrentAccess
endpoint to check if the next device is allowed to access the content.
- If
accessGranted
=true
, the device is allowed to access the content. - If
accessGranted
=false
, the device is not allowed to access the content.
API Usage
The following sections shows concurrent access API usage together with getAccessStatus
and getAccessibleTags
APIs.
Usage with getAccessStatus()
1 if (getAccessStatus(customerToken, 'offer_id').accessGranted
2 && verifyConcurrentAcccess(publisherToken, customerToken, 'deviceId', 'Sport').accessGranted) {
3 registerConcurrentAccess(publisherToken, customerToken, 'deviceId', 'Sport');
4
5 // play content
6}
Usage with getAccessibleTags()
1 if (getAccessibleTags(publisherToken, customerToken).tags.indexOf('Sport')
2 && verifyConcurrentAcccess(publisherToken, customerToken, 'deviceId', 'Sport').accessGranted) {
3 registerConcurrentAccess(publisherToken, customerToken, 'deviceId', 'Sport');
4
5 // play content
6}
Updated 5 months ago