void processNewUser(NewUserMessage message) { String newUsername = this.validateUsername(message.getUsername()); NewUserMessage uMessage = new NewUserMessage(newUsername); try { session.getBasicRemote().sendObject(uMessage); } catch (IOException | EncodeException ioe) { System.out.println( "Error signing " + message.getUsername() + " into chat : " + ioe.getMessage()); } this.registerUser(newUsername); try { ResultSet rs = null, ds = null; String z, x; String url1 = "jdbc:mysql://localhost:3306/chat"; Connection conn1 = DriverManager.getConnection(url1, "root", "root"); Statement st1 = conn1.createStatement(); Statement st2 = conn1.createStatement(); String myQuery = "SELECT Message,Recepient FROM Log WHERE User = '******'"; System.out.println(myQuery); rs = st1.executeQuery("SELECT Message,Recepient FROM Log WHERE User = '******';"); while (rs.next()) { z = rs.getString("Message"); x = rs.getString("Recepient"); ChatUpdateMessage cdm1 = new ChatUpdateMessage(newUsername, z, x); try { session.getBasicRemote().sendObject(cdm1); } catch (IOException | EncodeException ex) { System.out.println("Error updating a client : " + ex.getMessage()); } } ds = st2.executeQuery("SELECT Message,User FROM Log WHERE Recepient = '" + newUsername + "';"); while (ds.next()) { z = ds.getString("Message"); x = ds.getString("User"); ChatUpdateMessage cdm2 = new ChatUpdateMessage(x, z, newUsername); try { session.getBasicRemote().sendObject(cdm2); } catch (IOException | EncodeException ex) { System.out.println("Error updating a client : " + ex.getMessage()); } } } catch (Exception e) { System.err.println("Got an exception! "); System.err.println(e.getMessage()); } this.broadcastUserListUpdate(); }
@OnMessage public void handleMessage(String message, Session session) throws IOException { if (!message.equals("ping")) { throw new IllegalArgumentException("Invalid message received: " + message); } session.getBasicRemote().sendText("pong"); }
private void broadcastUserListUpdate() { UserListUpdateMessage ulum = new UserListUpdateMessage(this.getUserList()); for (Session nextSession : session.getOpenSessions()) { try { nextSession.getBasicRemote().sendObject(ulum); } catch (IOException | EncodeException ex) { System.out.println("Error updating a client : " + ex.getMessage()); } } }
/** * When a user sends a message to the server, this method will intercept the message and allow us * to react to it. For now the message is read as a String. */ @OnMessage public void onMessage(String message, Session session) { Logger logger = LogManager.getFormatterLogger(EchoService.class); logger.info("Message from " + session.getId() + ": " + message); try { session.getBasicRemote().sendText(message); } catch (IOException ex) { ex.printStackTrace(); logger.error(ex.getMessage(), ex); } }
@OnOpen public void onOpen(Session session) { try { // add new user to list of users sessionList.add(session); // send new user their session id session.getBasicRemote().sendText("{\"sessionId\":\"" + session.getId() + "\"}"); } catch (IOException e) { } }
private boolean processWatchKey(WatchKey watchKey) { for (WatchEvent<?> event : watchKey.pollEvents()) { if (StandardWatchEventKinds.OVERFLOW == event.kind()) continue; try { session.getBasicRemote().sendObject(((Path) event.context()).toFile()); } catch (Exception e) { e.printStackTrace(); } } return watchKey.reset(); }
@OnOpen public void onOpen(Session session) { try { User person = new User(); person.setName("john"); person.setSurname("smith"); person.setEmail("*****@*****.**"); session.getBasicRemote().sendObject(person); } catch (Exception e) { e.printStackTrace(); } }
@OnOpen public void setMonitor(@PathParam("directory") String directory, Session s) { System.out.printf("Watch for %s%n", directory); try { watchService = FileSystems.getDefault().newWatchService(); session = s; Path p = new File(directory).toPath(); p.register( watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY); session.getBasicRemote().sendText("Registered " + p); pollThr = new Thread(this); pollThr.start(); } catch (IOException e) { try { session.getBasicRemote().sendText("Can't setup watcher :" + e); } catch (IOException e2) { } } }
private void broadcastTranscriptUpdate() { String v = this.transcript.getRec(); String g; if (c.equals(v)) { for (Session nextSession : session.getOpenSessions()) { ChatUpdateMessage cdm = new ChatUpdateMessage( this.transcript.getLastUsername(), this.transcript.getLastMessage(), this.transcript.getRec()); try { nextSession.getBasicRemote().sendObject(cdm); } catch (IOException | EncodeException ex) { System.out.println("Error updating a client : " + ex.getMessage()); } } } else { for (Session nextSession : session.getOpenSessions()) { String check = this.transcript.getRec(); ChatUpdateMessage cdm = new ChatUpdateMessage( this.transcript.getLastUsername(), this.transcript.getLastMessage(), this.transcript.getRec()); g = (String) nextSession.getUserProperties().get(USERNAME_KEY); if (v.equals(g)) { try { nextSession.getBasicRemote().sendObject(cdm); } catch (IOException | EncodeException ex) { System.out.println("Error updating a client : " + ex.getMessage()); } } } } }
/** * @OnOpen allows us to intercept the creation of a new session. The session class allows us to * send data to the user. In the method onOpen, we'll let the user know that the handshake was * successful. */ @OnOpen public void onOpen(Session session) { Logger logger = LogManager.getFormatterLogger(EchoService.class); logger.info(session.getId() + " has opened a connection"); logger.info("MaxBinaryMessageBufferSize %d", session.getMaxBinaryMessageBufferSize()); logger.info("MaxIdleTimeout %d", session.getMaxIdleTimeout()); logger.info("MaxTextMessageBufferSize %d", session.getMaxTextMessageBufferSize()); logger.info("Open sessions size %d", session.getOpenSessions().size()); logger.info("Protocol %s", session.getProtocolVersion()); logger.info("QueryString %s", session.getQueryString()); try { session.getBasicRemote().sendText("Connection Established"); } catch (IOException ex) { ex.printStackTrace(); logger.error(ex.getMessage(), ex); } }
@OnMessage public void message( @PathParam("gameidentifier") String gameIdentifier, String message, Session client) throws IOException, EncodeException { JsonObject jsonObj = Json.createReader(new StringReader(message)).readObject(); String command = jsonObj.getString("command"); if (command.equals("getPlayers")) { JsonArrayBuilder arrayBuilder = getCouchStorage().playersList(gameIdentifier); JsonObjectBuilder objectBuilder = Json.createObjectBuilder().add("players", arrayBuilder).add("command", "loadPlayers"); client.getBasicRemote().sendText(objectBuilder.build().toString()); } else if (command.equals("addPlayer")) { String playerUUID = jsonObj.getString("playerID"); Point position = new Point(jsonObj.getJsonNumber("positionX"), jsonObj.getJsonNumber("positionY")); getCouchStorage().addPlayer(playerUUID, position, gameIdentifier); JsonObjectBuilder objectBuilderForAdd = Json.createObjectBuilder() .add("command", "addedPlayer") .add( "data", Json.createObjectBuilder() .add("PlayerID", playerUUID) .add("positionX", position.getPointX()) .add("positionY", position.getPointY())); String jsonString = objectBuilderForAdd.build().toString(); for (Session peer : client.getOpenSessions()) { peer.getBasicRemote().sendText(jsonString); } } else if (command.equals("movePlayer")) { JsonObject jsonMoveData = Json.createReader(new StringReader(message)).readObject().getJsonObject("data"); JsonObjectBuilder objectBuilder = Json.createObjectBuilder().add("command", "playerMoved").add("data", jsonMoveData); String playerId = jsonMoveData.getString("PlayerID"); Point position = new Point( jsonMoveData.getJsonNumber("positionX"), jsonMoveData.getJsonNumber("positionY")); Point targetPosition = new Point( jsonMoveData.getJsonNumber("targetPositionX"), jsonMoveData.getJsonNumber("targetPositionY")); int direction = jsonMoveData.getInt("direction"); getCouchStorage().updatePlayer(playerId, position, direction, targetPosition); String jsonString = objectBuilder.build().toString(); for (Session peer : client.getOpenSessions()) { peer.getBasicRemote().sendText(jsonString); } } else if (command.equals("synchronize")) { JsonArray items = Json.createReader(new StringReader(message)).readObject().getJsonArray("data"); getCouchStorage().synchronizePlayers(items); JsonArrayBuilder arrayBuilder = getCouchStorage().playersList(gameIdentifier); JsonObjectBuilder objectBuilder = Json.createObjectBuilder().add("players", arrayBuilder).add("command", "synchronize"); String jsonString = objectBuilder.build().toString(); for (Session peer : client.getOpenSessions()) { peer.getBasicRemote().sendText(jsonString); } } }