/[projects]/miscJava/Test3/src/dk/thoerup/websocket/AnnotatedSocket.java
ViewVC logotype

Diff of /miscJava/Test3/src/dk/thoerup/websocket/AnnotatedSocket.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2112 by torben, Tue Feb 11 08:33:52 2014 UTC revision 2113 by torben, Tue Feb 11 12:44:13 2014 UTC
# Line 2  package dk.thoerup.websocket; Line 2  package dk.thoerup.websocket;
2    
3  import java.io.IOException;  import java.io.IOException;
4  import java.util.HashMap;  import java.util.HashMap;
5    import java.util.Random;
6    
7  import javax.websocket.CloseReason;  import javax.websocket.CloseReason;
8  import javax.websocket.EndpointConfig;  import javax.websocket.EndpointConfig;
# Line 16  import javax.websocket.server.ServerEndp Line 17  import javax.websocket.server.ServerEndp
17  @ServerEndpoint("/wstest")  @ServerEndpoint("/wstest")
18  public class AnnotatedSocket {  public class AnnotatedSocket {
19          static private HashMap<String, Session> sessions = new HashMap<String,Session>();          static private HashMap<String, Session> sessions = new HashMap<String,Session>();
20            static private HashMap<String, String> sessionNicks = new HashMap<String,String>();
21            
22            private static Random rand = new Random();
23                    
24                    
25          @OnOpen          @OnOpen
26          public void open(Session session, EndpointConfig conf) {          public void open(Session session, EndpointConfig conf) {
27                    String guestNick = "Guest-" + rand.nextInt();
28                    
29                    broadcastMessage(guestNick + " has joined the chat");
30                    try {
31                            session.getBasicRemote().sendText( "Welcome " + guestNick);
32                    } catch (IOException e) {
33                            System.out.println("Error sending welcome messages " + e.getMessage() );
34                    }
35                    
36                    
37                    sessionNicks.put(session.getId(), guestNick);
38                  sessions.put(session.getId(), session);                          sessions.put(session.getId(), session);        
39                    
40          }          }
41                    
42          @OnError          @OnError
# Line 30  public class AnnotatedSocket { Line 46  public class AnnotatedSocket {
46          @OnClose          @OnClose
47          public void close(Session session, CloseReason reason) {          public void close(Session session, CloseReason reason) {
48                  sessions.remove(session.getId());                  sessions.remove(session.getId());
49                    sessionNicks.remove(session.getId());
50          }          }
51                    
52    
53          @OnMessage          @OnMessage
54          public void onMessage(Session session, String msg) {          public void onMessage(Session session, String msg) {
55                    String parts[] = msg.split("#", 2);
56                    String cmd = parts[0];
57                    
58                    
59                    switch (cmd) {
60                    case "CHAT":
61                            String messagePart = parts[1];
62                            String nick = sessionNicks.get(session.getId() );
63                            broadcastMessage(nick + "> " + messagePart);
64                            break;
65    
66                    case "NICK":
67                            String oldNick = sessionNicks.get( session.getId() );
68                            String newNick = parts[1];
69                            
70                            sessionNicks.put(session.getId(), newNick);
71                            
72                            broadcastMessage( "*** " + oldNick + " switched nick to " + newNick);
73                            break;
74                    }
75            }
76            
77            private void broadcastMessage(String msg) {
78                  try {                  try {
79                          for(Session ses: sessions.values() ) {                          for(Session ses: sessions.values() ) {
80                                  ses.getBasicRemote().sendText( session.getId() + " > " + msg);                                                            ses.getBasicRemote().sendText( msg);                            
81                          }                          }
                         System.out.println("Returned msg: " + msg);  
82                  } catch (IOException e) {                  } catch (IOException e) {
83                          System.out.println("Error returning message " + e.getMessage() );                          System.out.println("Error broadcasting message " + e.getMessage() );
84                  }                  }              
85          }          }
86            
87            
88  }  }

Legend:
Removed from v.2112  
changed lines
  Added in v.2113

  ViewVC Help
Powered by ViewVC 1.1.20