I meant my "question" On Wed, Apr 3, 2019 at 4:18 PM Ernesto Reinaldo Barreiro <reier...@gmail.com> wrote:
> Hi, > > Thanks for your answer. Yes my answer was more on the spirit if there is > something already available and ready to use.... Or if it makes sense to > have this by default at interface level. > > On Wed, Apr 3, 2019 at 3:37 PM Maxim Solodovnik <solomax...@gmail.com> > wrote: > >> Hello Ernesto, >> >> We also have code to send websocket messages "to others" >> I do store active client list (each page/tab is client) >> Every client stores pageId and sessionId >> >> Then I do filtering on pageId+sessionId >> >> This seems to work as expected >> >> On Wed, 3 Apr 2019 at 18:18, Ernesto Reinaldo Barreiro >> <reier...@gmail.com> wrote: >> > >> > 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 >> >> >> >> -- >> WBR >> Maxim aka solomax >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> > > -- > Regards - Ernesto Reinaldo Barreiro > -- Regards - Ernesto Reinaldo Barreiro