-
Notifications
You must be signed in to change notification settings - Fork 3
Custom Subscription Listeners
uklance edited this page Nov 15, 2012
·
8 revisions
Subscription listeners intercept the client "subscribe" and "unsubscribe" events and will not be fired if authorization fails. Subscription listener configuration includes a topic.
Subscription Listeners can be contributed via your Tapestry application's IOC Module.
public static void contributeSubscriptionListeners(OrderedConfiguration<SubscriptionListenerContribution> config) {
SubscriptionListener myListener = new SubscriptionListener() {
public void onSubscribe(PushSession pushSession) {
System.out.println(String.format("onSubscribe(%s)", pushSession.getTopic()));
}
public void onUnsubscribe(PushSession pushSession) {
System.out.println(String.format("onUnsubscribe(%s)", pushSession.getTopic()));
}
};
SubscriptionListenerContribution contribution = new SubscriptionListenerContribution("/**", myListener);
config.add("myListener", contribution);
}
Subscription Listeners can also be added and removed at runtime via the Subscription Listeners service
@Inject
private SubscriptionListeners subscriptionListeners;
private SubscriptionListener myListener;
public synchronized void doAdd() {
if (myListener == null) {
myListener = new SubscriptionListener() {
public void onSubscribe(PushSession pushSession) {
System.out.println(String.format("onSubscribe(%s)", pushSession.getTopic()));
}
public void onUnsubscribe(PushSession pushSession) {
System.out.println(String.format("onUnsubscribe(%s)", pushSession.getTopic()));
}
};
subscriptionListeners.addListener("/**", myListener);
}
}
public synchronized void doRemove() {
if (myListener != null) {
subscriptionListeners.removeListener("/**", myListener);
myListener = null;
}
}