Hi,

I have the following use case.

1- One browser tab sends a text message
2- Other browser tabs should receive message (but emitting tab not).

I have done

add(*new *WebSocketBehavior() {
@Override
*protected void *onMessage(WebSocketRequestHandler handler, TextMessage
message) {
sendNotificationToSession(....)
}
});



*public void *sendNotificationToSession(String sessionId) {
*if *(com.rometools.utils.Strings.*isEmpty*(sessionId)) {
*throw new *IllegalArgumentException(*"sessionId cannot be empty"*);
}
Application application = Application.*get*(KmsContext.*APP_NAME*);
privateSendNotificationTo(getRegistry(application).getConnections(application,
sessionId));
}


*private void *privateSendNotificationTo(Collection<IWebSocketConnection>
webSocketConnections) {
String message = toJSON();
*for*(IWebSocketConnection connection : webSocketConnections) {
*if *(connection.isOpen()) {
*try *{
connection.sendMessage(message);
} *catch *(IOException e) {
*log*.error(*"Could not send notification"*, e);
*//$NON-NLS-1$ *}
}
}
}


I see some classes like





*/**  * A base message for all messages with information about the client
 */ **public abstract class *AbstractClientMessage *implements *
IWebSocketMessage
{
*private final *String *applicationName*;
*private final *String *sessionId*;
*private final *IKey *key*;

*public *AbstractClientMessage(Application application, String sessionId,
IKey key)
{
*this*.*applicationName *= Args.*notNull*(application, *"application"*
).getName();
*this*.*sessionId *= Args.*notNull*(sessionId, *"sessionId"*);
*this*.*key *= Args.*notNull*(key, *"key"*);
}

*public *Application getApplication()
{
*return *Application.*get*(*applicationName*);
}

*public *String getSessionId()
{
*return **sessionId*;
}

*public *IKey getKey()
{
*return **key*;
}

}


provide IKey as "discriminator" of sending page. But this is neither part
of IWebSocketMessage nor it is part of IWebSocketConnection... So, I don't
really know to use to exclude the emitting page. This clearly would be
possible if both IWebSocketMessage and IWebSocketConnection have a IKey
getPageKey();


Is there a way to do this? Am I missing some essential part?


-- 
Regards - Ernesto Reinaldo Barreiro

Reply via email to