Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package websockets;
- import java.io.IOException;
- import java.net.Inet4Address;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Timer;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javax.ejb.EJB;
- import javax.ejb.Singleton;
- import javax.websocket.OnClose;
- import javax.websocket.OnError;
- import javax.websocket.OnMessage;
- import javax.websocket.OnOpen;
- import javax.websocket.Session;
- import javax.websocket.server.ServerEndpoint;
- import javax.ws.rs.core.MediaType;
- import javax.ws.rs.core.Response;
- import org.jboss.resteasy.client.jaxrs.ResteasyClient;
- import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
- import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
- import session.JMSCollection;
- import session.JMSQueue;
- @ServerEndpoint("/websocket")
- @Singleton
- public class WSManager {
- Logger log = Logger.getLogger("Websockets endpoint");
- @EJB
- JMSCollection jmsColl;
- List<Session> sessions = new ArrayList<Session>();
- Timer t = new Timer();
- public WSManager() {
- /*
- * t.schedule(new TimerTask() {
- *
- * @Override public void run() { for (Session s : sessions) { try {
- * s.getBasicRemote().sendText("od servera: " +
- * System.currentTimeMillis()); log.info("Poslao poruku od servera na: "
- * + s.getId()); } catch (IOException e) { e.printStackTrace(); } } } },
- * 5000, 5000);
- */
- }
- @OnOpen
- public void onOpen(Session session) {
- if (!sessions.contains(session)) {
- sessions.add(session);
- log.info("Dodao sesiju: " + session.getId() + " u endpoint-u: " + this.hashCode() + ", ukupno sesija: "
- + sessions.size());
- jmsColl.getSessions().put(session.getId(), session);
- }
- }
- @OnMessage
- public void echoTextMessage(Session session, String msg, boolean last) {
- try {
- if (session.isOpen()) {
- log.info("Perin Pera Websocket endpoint: " + this.hashCode() + " primio: " + msg + " u sesiji: "
- + session.getId());
- System.out.println("===============================");
- System.out.println(msg);
- String[] temp = msg.split(",");
- /*
- * ResteasyClient client = new ResteasyClientBuilder().build();
- *
- * ResteasyWebTarget target = client.target(
- * "http://192.168.0.12:8080/ClientWeb/rest/client/loginUser?user="
- * +temp[0]+"&pass="+temp[1]); Response response =
- * target.request(MediaType.APPLICATION_JSON).get();
- *
- * System.out.println(response.readEntity(String.class));
- */
- System.out.println(msg);
- String address = Inet4Address.getLocalHost().getHostAddress().toString();
- /*if (address.equals("192.168.0.12")) {
- if (temp[0].equals("login")) {
- JMSQueue queue = new JMSQueue(msg + "," + session.getId(), "login");
- }
- if (msg.equals("logout")){
- JMSQueue queue = new JMSQueue(msg + "," + session.getId(), "logout");
- }
- if (temp[0].equals("message")){
- JMSQueue queue = new JMSQueue(msg + "," + session.getId(), "message" );
- }
- }*/
- String splited[] = msg.split(",");
- if (temp[0].equals("login")) {
- //JMSQueue queue = new JMSQueue(msg + "," + session.getId(), "login");
- ResteasyClient client = new ResteasyClientBuilder().build();
- 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);
- Response response = target.request().get();
- }
- if (temp[0].equals("message")){
- //JMSQueue queue = new JMSQueue(msg + "," + session.getId(), "message" );
- ResteasyClient client = new ResteasyClientBuilder().build();
- ResteasyWebTarget target = client.target("http://"+address+":8080/ClientWeb/rest/client/sendMsg?msg="+msg+"&socketId="+session.getId());
- Response response = target.request().get();
- }
- System.out.println("===============================");
- for (Session s : sessions) {
- if (!s.getId().equals(session.getId())) {
- s.getBasicRemote().sendText(msg, last);
- log.info("Sending '" + msg + "' to : " + s.getId());
- }
- }
- }
- } catch (IOException e) {
- try {
- session.close();
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- }
- }
- @OnClose
- public void close(Session session) {
- jmsColl.getSessions().remove(session);
- sessions.remove(session);
- log.info("Zatvorio: " + session.getId() + " u endpoint-u: " + this.hashCode());
- }
- @OnError
- public void error(Session session, Throwable t) {
- jmsColl.getSessions().remove(session);
- sessions.remove(session);
- log.log(Level.SEVERE, "Greška u sessiji: " + session.getId() + " u endpoint-u: " + this.hashCode() + ", tekst: "
- + t.getMessage());
- t.printStackTrace();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement