1.1 --- a/chat/client/src/main/java/org/apidesign/demo/chat/ChatClient.java Fri Apr 22 06:14:38 2016 +0200
1.2 +++ b/chat/client/src/main/java/org/apidesign/demo/chat/ChatClient.java Fri Apr 22 08:53:13 2016 +0200
1.3 @@ -30,6 +30,7 @@
1.4 import net.java.html.json.Property;
1.5 import org.apidesign.demo.chat.shared.Message;
1.6 import org.apidesign.demo.chat.shared.Query;
1.7 +import org.apidesign.demo.chat.shared.Reply;
1.8
1.9 /**
1.10 *
1.11 @@ -56,7 +57,7 @@
1.12 Message msg = new Message();
1.13 msg.setUser(m.getUser());
1.14 msg.setComment(m.getComment());
1.15 - m.postComment(m.getUrl(), msg);
1.16 + m.socket(m.getUrl(), new Query().assignPost(msg));
1.17 }
1.18
1.19 static void cantChat(ChatModel model, Exception err) {
1.20 @@ -64,44 +65,22 @@
1.21 }
1.22
1.23
1.24 - @OnReceive(url = "{url}/chat", method = "POST", data = Message.class, onError = "cantChat")
1.25 - static void postComment(ChatModel m, Message addedMessage) {
1.26 - if (addedMessage.getComment().equals(m.getComment())) {
1.27 - m.setComment("");
1.28 + @OnReceive(url = "{url}/chat", method = "WebSocket", data = Query.class, onError = "cantChat")
1.29 + static void socket(ChatModel m, Reply reply) {
1.30 + if (reply == null) {
1.31 + m.getMsgs().add(new Message("System", "Connected to server at " + m.getUrl() + "/chat!", 0));
1.32 + return;
1.33 }
1.34 - }
1.35 -
1.36 - @OnReceive(url = "{url}/chat?since=0", onError = "cantChat")
1.37 - static void initialRead(ChatModel m, Query q) {
1.38 m.getMsgs().clear();
1.39 - m.getMsgs().addAll(q.getMessages());
1.40 - moreMessages(m);
1.41 - }
1.42 -
1.43 - @OnReceive(url = "{url}/chat?since={since}", onError = "cantChat")
1.44 - static void updateMsgs(ChatModel m, Query q) {
1.45 - m.getMsgs().addAll(q.getMessages());
1.46 - moreMessages(m);
1.47 - }
1.48 -
1.49 - private static void moreMessages(ChatModel m) {
1.50 - long now = 0;
1.51 - for (Message msg : m.getMsgs()) {
1.52 - if (now < msg.getSince()) {
1.53 - now = msg.getSince();
1.54 - }
1.55 - }
1.56 - m.updateMsgs(m.getUrl(), "" + (now + 1));
1.57 + m.getMsgs().addAll(reply.getMessages());
1.58 }
1.59
1.60 public static void onPageLoad() {
1.61 ChatModel chm = new ChatModel();
1.62 - chm.setUrl("http://localhost:8080");
1.63 - Message m = new Message();
1.64 - m.setComment("Waiting for messages from the server...");
1.65 - m.setUser("system");
1.66 + chm.setUrl("ws://localhost:8080");
1.67 + Message m = new Message("System", "Waiting for messages from the server...", 0);
1.68 chm.getMsgs().add(m);
1.69 chm.applyBindings();
1.70 - chm.initialRead(chm.getUrl());
1.71 + chm.socket(chm.getUrl(), null);
1.72 }
1.73 }