Update conversation by displaying new messages when they are sent

100 views
Skip to first unread message

Olar Andrei

unread,
Sep 20, 2016, 5:38:11 AM9/20/16
to GWT Users
Hello,

In my GWT application I have a messaging system integrated within. When a specific conversation gets opened, a query runs and selects all messages available for this conversation. From the same view you can reply to that conversation. When replying, the other user has to click a small refresh button (located on top, which agian gets all mesages from the DB running the same query from above) in order for the last message to appear.

My question: How can I make that refresh automatically, so you don't have to click on the button in order to refresh the conversation. Like in FB, Messenger, etc, where you don't refresh the conversation and the messages keep coming without you having to do anything.

Thanks in advance.

Frank

unread,
Sep 20, 2016, 6:15:59 AM9/20/16
to GWT Users
I do this using signalR (for which I built a GWT wrapper (not opensource).

But maybe you should look into websockets or atmosphere (which uses websockets).

Vassilis Virvilis

unread,
Sep 20, 2016, 6:17:47 AM9/20/16
to google-we...@googlegroups.com
Simplest solution a timer that polls the DB every 10sec let's say.

If you want a truly asynchronous server side notification you should look at websockets or long polling...

    Vassilis

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsub...@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.



--
Vassilis Virvilis

David

unread,
Sep 20, 2016, 7:41:35 AM9/20/16
to google-we...@googlegroups.com
If you only need to support modern browsers then I really would go the WebSockets way. Its really simple to implement with JSInterop. I did so in combination with GWT Jackson and RequestBuilder. On the server side I used Jersey. Unfortunately I cannot publish this code since it is closed source.

On Tue, Sep 20, 2016 at 12:16 PM Frank <frank....@gmail.com> wrote:
I do this using signalR (for which I built a GWT wrapper (not opensource).

But maybe you should look into websockets or atmosphere (which uses websockets).

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-tool...@googlegroups.com.
To post to this group, send email to google-we...@googlegroups.com.

natan clara

unread,
Sep 20, 2016, 9:50:41 AM9/20/16
to google-we...@googlegroups.com

Make a timer that fires every X seconds.

Button refresh = new Button();
Time temporizador = new Timer() {

    @Override
    public void run() {
        dispara();
    }
};
// 2 seconds
temporizador.scheduleRepeating(2000);


private final void dispara() {
    refresh.setFocus(true);
    refresh.fireEvent(new GwtEvent<ClickHandler>() {
        @Override
        protected void dispatch(ClickHandler handler) {
            handler.onClick(null);
        }

        @Override
        public com.google.gwt.event.shared.GwtEvent.Type<ClickHandler> getAssociatedType() {
            return ClickEvent.getType();
        }
    });
}


Natan.

JonL

unread,
Sep 21, 2016, 10:43:45 AM9/21/16
to GWT Users
Others have suggested websockets, but there are several other options as well.  There is google cloud messaging and many other libraries to solve this problem as well as ServerSent Events.


If none of those are options, try to avoid using a regular timer.  More timers, more problems.  If you must use a timer like object, I would suggest using gwt Scheduler instead.

Thomas Broyer

unread,
Sep 21, 2016, 10:48:22 AM9/21/16
to GWT Users


On Wednesday, September 21, 2016 at 4:43:45 PM UTC+2, JonL wrote:
Others have suggested websockets, but there are several other options as well.  There is google cloud messaging and many other libraries to solve this problem as well as ServerSent Events.


Unfortunately, and surprisingly, EventSource isn't supported in Microsoft browsers, contrary to WebSocket!

If none of those are options, try to avoid using a regular timer.  More timers, more problems.  If you must use a timer like object, I would suggest using gwt Scheduler instead.

Most importantly, schedule the task again from the RPC callback, do not schedule a repeating task (in other words, in JS terms, use setTimeout, do not use setInterval)

Jonathon Lamon

unread,
Sep 21, 2016, 10:57:06 AM9/21/16
to GWT Users
There are several pollyfills for eventsource though.  Just like there are for older browsers and websockets.


--
You received this message because you are subscribed to a topic in the Google Groups "GWT Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/zsyG1NKf2p8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to google-web-tool...@googlegroups.com.

To post to this group, send email to google-we...@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.
--
Jonathon Lamon
Chief Software Engineer
Perceptronics Solutions Inc.
Tel  703-485-2922
Cell 269-205-4649
www.percsolutions.com

Frank

unread,
Sep 22, 2016, 2:29:56 AM9/22/16
to GWT Users
I will repeat myself : I would look into Athmosphere.
This is a wrapper around websockets so you don't have to do the bear bones stuff yourself. And they talk about GWT on their Github page : https://github.com/Atmosphere/atmosphere-extensions/wiki/Atmosphere-GWT

I used SignalR which is also a wrapper around Websockets, and falls automatic back to other stuff if it fails. No GWT support though so I wrote my own wrapper in about a day. Another problem for you probably is that SignalR needs an IIS server.


Whatever you do : don't use timers !
Reply all
Reply to author
Forward
0 new messages