diff -r f57278ddd70e -r 2d0750864a98 chat/client/src/main/java/org/apidesign/demo/chat/ChatClient.java --- a/chat/client/src/main/java/org/apidesign/demo/chat/ChatClient.java Fri Apr 22 06:14:38 2016 +0200 +++ b/chat/client/src/main/java/org/apidesign/demo/chat/ChatClient.java Fri Apr 22 08:53:13 2016 +0200 @@ -30,6 +30,7 @@ import net.java.html.json.Property; import org.apidesign.demo.chat.shared.Message; import org.apidesign.demo.chat.shared.Query; +import org.apidesign.demo.chat.shared.Reply; /** * @@ -56,7 +57,7 @@ Message msg = new Message(); msg.setUser(m.getUser()); msg.setComment(m.getComment()); - m.postComment(m.getUrl(), msg); + m.socket(m.getUrl(), new Query().assignPost(msg)); } static void cantChat(ChatModel model, Exception err) { @@ -64,44 +65,22 @@ } - @OnReceive(url = "{url}/chat", method = "POST", data = Message.class, onError = "cantChat") - static void postComment(ChatModel m, Message addedMessage) { - if (addedMessage.getComment().equals(m.getComment())) { - m.setComment(""); + @OnReceive(url = "{url}/chat", method = "WebSocket", data = Query.class, onError = "cantChat") + static void socket(ChatModel m, Reply reply) { + if (reply == null) { + m.getMsgs().add(new Message("System", "Connected to server at " + m.getUrl() + "/chat!", 0)); + return; } - } - - @OnReceive(url = "{url}/chat?since=0", onError = "cantChat") - static void initialRead(ChatModel m, Query q) { m.getMsgs().clear(); - m.getMsgs().addAll(q.getMessages()); - moreMessages(m); - } - - @OnReceive(url = "{url}/chat?since={since}", onError = "cantChat") - static void updateMsgs(ChatModel m, Query q) { - m.getMsgs().addAll(q.getMessages()); - moreMessages(m); - } - - private static void moreMessages(ChatModel m) { - long now = 0; - for (Message msg : m.getMsgs()) { - if (now < msg.getSince()) { - now = msg.getSince(); - } - } - m.updateMsgs(m.getUrl(), "" + (now + 1)); + m.getMsgs().addAll(reply.getMessages()); } public static void onPageLoad() { ChatModel chm = new ChatModel(); - chm.setUrl("http://localhost:8080"); - Message m = new Message(); - m.setComment("Waiting for messages from the server..."); - m.setUser("system"); + chm.setUrl("ws://localhost:8080"); + Message m = new Message("System", "Waiting for messages from the server...", 0); chm.getMsgs().add(m); chm.applyBindings(); - chm.initialRead(chm.getUrl()); + chm.socket(chm.getUrl(), null); } }