chat/client/src/main/java/org/apidesign/demo/chat/ChatClient.java
branchNewChat
changeset 240 2d0750864a98
parent 239 f57278ddd70e
child 242 58596208d06d
     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  }