Thanks Martin!

On Fri, Apr 5, 2019 at 9:13 AM Martin Grigorov <mgrigo...@apache.org> wrote:

> https://issues.apache.org/jira/browse/WICKET-6649
>
> On Thu, Apr 4, 2019 at 1:35 PM Ernesto Reinaldo Barreiro <
> reier...@gmail.com>
> wrote:
>
> > Hi Martin,
> >
> > Many thanks for feedback. I will file a ticket.
> >
> >
> > > Please file a ticket.
> > > TextMessage and BinaryMessage can be improved.
> > > I have to see whether IWebSocketConnection can be improved too.
> > >
> >
> > I see  AbstractWebSocketConnection contains AbstractWebSocketProcessor
> and
> > this one a pageId. Meanwhile I can try to roll my own implementation to
> > cover use case.
> >
> > But due to API changes this could be done only for Wicket 9.x.
> > >
> >
> > I understand. We are still on 7.x... One more argument to push for going
> > 8.x and then 9.x.
> >
> > Maybe one possibility to make this more configurable is allow to register
> > at "application level" some factory for IWebSocketConnections and/or
> > TextMessages? So, no need to break this on 7.x, 8.x? I don't know if this
> > makes sense at all? I see AbstractWebSocketProcessor contains both
> > Application and pageId.
> >
> >
> > >
> > > On Wed, Apr 3, 2019 at 4:19 PM Ernesto Reinaldo Barreiro <
> > > reier...@gmail.com>
> > > wrote:
> > >
> > > > 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
> > > >
> > >
> >
> >
> > --
> > Regards - Ernesto Reinaldo Barreiro
> >
>


-- 
Regards - Ernesto Reinaldo Barreiro

Reply via email to