Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example;
- import io.vertx.core.AbstractVerticle;
- import io.vertx.core.eventbus.Message;
- import io.vertx.core.json.JsonObject;
- import io.vertx.core.logging.Logger;
- import io.vertx.core.logging.LoggerFactory;
- import java.util.HashSet;
- /**
- * Created by developer on 30.04.16.
- */
- public class GreetServiceVerticle extends AbstractVerticle {
- Logger logger = LoggerFactory.getLogger(GreetServiceVerticle.class);
- //HashMap<String, MessageProducer<String>> connectedUsers = new HashMap<>();
- HashSet<String> activeUsers = new HashSet<>();
- public void start() throws Exception {
- this.vertx.eventBus().consumer(Channels.CONNECTION_CHANNEL, (Message<JsonObject> event) -> {
- JsonObject msg = event.body();
- String socketId = msg.getString("socketId");
- boolean connected = msg.getBoolean("connected");
- if (connected) {
- onUserConnected(socketId);
- } else onUserLogout(socketId);
- });
- this.vertx.eventBus().consumer(Channels.USER_SAID_CHANNEL, (Message<String> msg)->{
- for(String sockId : activeUsers){
- String msgToBroadcast = msg.body();//String.format("[%s]: %s", msg.address(), msg.body());
- logger.info("msgToBroadcast="+msgToBroadcast+"/sockId="+sockId);
- vertx.eventBus().send(sockId, msgToBroadcast);
- }
- });
- }
- private void onUserConnected(String socketId){
- String msg = "user "+socketId+" connected!";
- logger.info(msg);
- for(String userSocketId : activeUsers){
- logger.info("sending to " + userSocketId);
- vertx.eventBus().send(userSocketId, msg);
- }
- activeUsers.add(socketId);
- logger.info("total:" + activeUsers.size());
- }
- private void onUserLogout(String socketId){
- activeUsers.remove(socketId);
- String msg = "user "+socketId+" disconnected!";
- logger.info(msg);
- logger.info("total:"+activeUsers.size());
- for(String userSocketId : activeUsers){
- logger.info("sending to " + userSocketId);
- vertx.eventBus().send(userSocketId, msg);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement