Advertisement
Guest User

Untitled

a guest
Apr 28th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.76 KB | None | 0 0
  1. package websockets;
  2.  
  3. import java.io.IOException;
  4. import java.net.Inet4Address;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import java.util.Timer;
  8. import java.util.logging.Level;
  9. import java.util.logging.Logger;
  10.  
  11. import javax.ejb.EJB;
  12. import javax.ejb.Singleton;
  13. import javax.websocket.OnClose;
  14. import javax.websocket.OnError;
  15. import javax.websocket.OnMessage;
  16. import javax.websocket.OnOpen;
  17. import javax.websocket.Session;
  18. import javax.websocket.server.ServerEndpoint;
  19. import javax.ws.rs.core.MediaType;
  20. import javax.ws.rs.core.Response;
  21.  
  22. import org.jboss.resteasy.client.jaxrs.ResteasyClient;
  23. import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
  24. import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
  25.  
  26. import session.JMSCollection;
  27. import session.JMSQueue;
  28.  
  29. @ServerEndpoint("/websocket")
  30. @Singleton
  31. public class WSManager {
  32. Logger log = Logger.getLogger("Websockets endpoint");
  33. @EJB
  34. JMSCollection jmsColl;
  35.  
  36. List<Session> sessions = new ArrayList<Session>();
  37. Timer t = new Timer();
  38.  
  39. public WSManager() {
  40. /*
  41. * t.schedule(new TimerTask() {
  42. *
  43. * @Override public void run() { for (Session s : sessions) { try {
  44. * s.getBasicRemote().sendText("od servera: " +
  45. * System.currentTimeMillis()); log.info("Poslao poruku od servera na: "
  46. * + s.getId()); } catch (IOException e) { e.printStackTrace(); } } } },
  47. * 5000, 5000);
  48. */
  49. }
  50.  
  51. @OnOpen
  52. public void onOpen(Session session) {
  53. if (!sessions.contains(session)) {
  54. sessions.add(session);
  55. log.info("Dodao sesiju: " + session.getId() + " u endpoint-u: " + this.hashCode() + ", ukupno sesija: "
  56. + sessions.size());
  57. jmsColl.getSessions().put(session.getId(), session);
  58. }
  59. }
  60.  
  61. @OnMessage
  62. public void echoTextMessage(Session session, String msg, boolean last) {
  63. try {
  64. if (session.isOpen()) {
  65. log.info("Perin Pera Websocket endpoint: " + this.hashCode() + " primio: " + msg + " u sesiji: "
  66. + session.getId());
  67.  
  68. System.out.println("===============================");
  69. System.out.println(msg);
  70. String[] temp = msg.split(",");
  71. /*
  72. * ResteasyClient client = new ResteasyClientBuilder().build();
  73. *
  74. * ResteasyWebTarget target = client.target(
  75. * "http://192.168.0.12:8080/ClientWeb/rest/client/loginUser?user="
  76. * +temp[0]+"&pass="+temp[1]); Response response =
  77. * target.request(MediaType.APPLICATION_JSON).get();
  78. *
  79. * System.out.println(response.readEntity(String.class));
  80. */
  81. System.out.println(msg);
  82. String address = Inet4Address.getLocalHost().getHostAddress().toString();
  83. /*if (address.equals("192.168.0.12")) {
  84. if (temp[0].equals("login")) {
  85. JMSQueue queue = new JMSQueue(msg + "," + session.getId(), "login");
  86. }
  87. if (msg.equals("logout")){
  88. JMSQueue queue = new JMSQueue(msg + "," + session.getId(), "logout");
  89. }
  90.  
  91. if (temp[0].equals("message")){
  92. JMSQueue queue = new JMSQueue(msg + "," + session.getId(), "message" );
  93. }
  94. }*/
  95. String splited[] = msg.split(",");
  96. if (temp[0].equals("login")) {
  97. //JMSQueue queue = new JMSQueue(msg + "," + session.getId(), "login");
  98. ResteasyClient client = new ResteasyClientBuilder().build();
  99. ResteasyWebTarget target = client.target("http://192.168.0.12:8080/ClientWeb/rest/client/loginUser?user="+splited[1]+"&pass="+splited[2]+"&sessionId="+session.getId()+"&address="+address);
  100. Response response = target.request().get();
  101. }
  102. if (temp[0].equals("message")){
  103. //JMSQueue queue = new JMSQueue(msg + "," + session.getId(), "message" );
  104. ResteasyClient client = new ResteasyClientBuilder().build();
  105. ResteasyWebTarget target = client.target("http://"+address+":8080/ClientWeb/rest/client/sendMsg?msg="+msg+"&socketId="+session.getId());
  106. Response response = target.request().get();
  107. }
  108. System.out.println("===============================");
  109.  
  110. for (Session s : sessions) {
  111. if (!s.getId().equals(session.getId())) {
  112. s.getBasicRemote().sendText(msg, last);
  113. log.info("Sending '" + msg + "' to : " + s.getId());
  114. }
  115. }
  116. }
  117. } catch (IOException e) {
  118. try {
  119. session.close();
  120. } catch (IOException e1) {
  121. e1.printStackTrace();
  122. }
  123. }
  124. }
  125.  
  126. @OnClose
  127. public void close(Session session) {
  128. jmsColl.getSessions().remove(session);
  129. sessions.remove(session);
  130. log.info("Zatvorio: " + session.getId() + " u endpoint-u: " + this.hashCode());
  131.  
  132. }
  133.  
  134. @OnError
  135. public void error(Session session, Throwable t) {
  136. jmsColl.getSessions().remove(session);
  137. sessions.remove(session);
  138. log.log(Level.SEVERE, "Greška u sessiji: " + session.getId() + " u endpoint-u: " + this.hashCode() + ", tekst: "
  139. + t.getMessage());
  140. t.printStackTrace();
  141.  
  142. }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement