Advertisement
Guest User

Untitled

a guest
May 3rd, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. package com.example;
  2.  
  3. import io.vertx.core.AbstractVerticle;
  4. import io.vertx.core.eventbus.Message;
  5. import io.vertx.core.json.JsonObject;
  6. import io.vertx.core.logging.Logger;
  7. import io.vertx.core.logging.LoggerFactory;
  8.  
  9. import java.util.HashSet;
  10.  
  11. /**
  12. * Created by developer on 30.04.16.
  13. */
  14. public class GreetServiceVerticle extends AbstractVerticle {
  15. Logger logger = LoggerFactory.getLogger(GreetServiceVerticle.class);
  16. //HashMap<String, MessageProducer<String>> connectedUsers = new HashMap<>();
  17. HashSet<String> activeUsers = new HashSet<>();
  18.  
  19. public void start() throws Exception {
  20. this.vertx.eventBus().consumer(Channels.CONNECTION_CHANNEL, (Message<JsonObject> event) -> {
  21. JsonObject msg = event.body();
  22. String socketId = msg.getString("socketId");
  23. boolean connected = msg.getBoolean("connected");
  24. if (connected) {
  25. onUserConnected(socketId);
  26. } else onUserLogout(socketId);
  27. });
  28. this.vertx.eventBus().consumer(Channels.USER_SAID_CHANNEL, (Message<String> msg)->{
  29. for(String sockId : activeUsers){
  30. String msgToBroadcast = msg.body();//String.format("[%s]: %s", msg.address(), msg.body());
  31. logger.info("msgToBroadcast="+msgToBroadcast+"/sockId="+sockId);
  32. vertx.eventBus().send(sockId, msgToBroadcast);
  33. }
  34. });
  35. }
  36.  
  37. private void onUserConnected(String socketId){
  38. String msg = "user "+socketId+" connected!";
  39. logger.info(msg);
  40. for(String userSocketId : activeUsers){
  41. logger.info("sending to " + userSocketId);
  42. vertx.eventBus().send(userSocketId, msg);
  43. }
  44. activeUsers.add(socketId);
  45. logger.info("total:" + activeUsers.size());
  46. }
  47. private void onUserLogout(String socketId){
  48. activeUsers.remove(socketId);
  49. String msg = "user "+socketId+" disconnected!";
  50. logger.info(msg);
  51. logger.info("total:"+activeUsers.size());
  52. for(String userSocketId : activeUsers){
  53. logger.info("sending to " + userSocketId);
  54. vertx.eventBus().send(userSocketId, msg);
  55. }
  56. }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement