Just a second...

Example: Receive notifications when a client subscribes to a routing topic

The following examples use the SubscriptionControl feature in the Unified API to listen for notifications of when a client subscribes to a routing topic.

Java and Android
package com.pushtechnology.diffusion.examples;

import com.pushtechnology.diffusion.client.Diffusion;
import com.pushtechnology.diffusion.client.features.control.topics.SubscriptionControl;
import com.pushtechnology.diffusion.client.features.control.topics.SubscriptionControl.RoutingSubscriptionRequest;
import com.pushtechnology.diffusion.client.features.control.topics.SubscriptionControl.SubscriptionCallback;
import com.pushtechnology.diffusion.client.session.Session;

/**
 * This demonstrates using a control client to be notified of subscription
 * requests to routing topics.
 * <P>
 * This uses the 'SubscriptionControl' feature.
 *
 * @author Push Technology Limited
 * @since 5.0
 */
public class ControlClientSubscriptionControlRouting {

    private final Session session;

    /**
     * Constructor.
     *
     * @param routingCallback for routing subscription requests
     */
    public ControlClientSubscriptionControlRouting(
        final SubscriptionCallback routingCallback) {

        session =
            Diffusion.sessions().principal("control").password("password")
                .open("ws://diffusion.example.com:80");

        final SubscriptionControl subscriptionControl =
            session.feature(SubscriptionControl.class);

        // Sets up a handler so that all subscriptions to topic a/b are routed
        // to routing/target/topic
        // To do this, the client session requires the 'view_session',
        // 'modify_session', and 'register_handler' permissions.
        subscriptionControl.addRoutingSubscriptionHandler(
            "a/b",
            new SubscriptionControl.RoutingSubscriptionRequest.Handler
            .Default() {
                @Override
                public void onSubscriptionRequest(
                    final RoutingSubscriptionRequest request) {

                    request.route(
                        "routing/target/topic",
                        routingCallback);
                }

            });
    }

    /**
     * Close the session.
     */
    public void close() {
        session.close();
    }
}
.NET
using PushTechnology.ClientInterface.Client.Factories;
using PushTechnology.ClientInterface.Client.Features.Control.Topics;
using PushTechnology.ClientInterface.Client.Session;

namespace Examples {
    /// <summary>
    /// This demonstrates using a control client to be notified of subscription requests to routing topics.
    ///
    /// This uses the <see cref="ISubscriptionControl"/> feature.
    /// </summary>
    public class ControlClientSubscriptionControlRouting {
        private readonly ISession session;

        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="routingCallback">The callback for routing subscription requests.</param>
        public ControlClientSubscriptionControlRouting( ISubscriptionCallback routingCallback ) {
            session = Diffusion.Sessions.Principal( "control" ).Password( "password" )
                .Open( "ws://diffusion.example.com:80" );

            var subscriptionControl = session.GetSubscriptionControlFeature();

            // Sets up a handler so that all subscriptions to topic 'a/b' are routed to the routing/target topic.
            // To do this, the client session requires the VIEW_SESSION, MODIFY_SESSION and REGISTER_HANDLER
            // permissions.
            subscriptionControl.AddRoutingSubscriptionHandler( "a/b", new SubscriptionHandler( routingCallback ) );
        }

        /// <summary>
        /// Close the session.
        /// </summary>
        public void Close() {
            session.Close();
        }

        private class SubscriptionHandler : RoutingSubscriptionRequestHandlerDefault {
            private readonly ISubscriptionCallback theRoutingCallback;

            public SubscriptionHandler( ISubscriptionCallback callback ) {
                theRoutingCallback = callback;
            }

            /// <summary>
            /// A request to subscribe to a specific routing topic.
            /// </summary>
            /// <param name="request"></param>
            public override void OnSubscriptionRequest( IRoutingSubscriptionRequest request ) {
                request.Route( "routing/target/topic", theRoutingCallback );
            }
        }
    }
}

Change the URL from that provided in the example to the URL of the Diffusion™ server.