package br.usp.nds.remote.servico; import java.io.IOException; import java.io.StringReader; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.json.Json; import javax.websocket.Session; import br.usp.nds.remote.persistencia.Mensagem; public class WebSocketManager { private List sessoes = new LinkedList(); private Map telas = new HashMap(); private static WebSocketManager instance; public void adicionar(Session sessao, String tela) { sessoes.add(sessao); telas.put(sessao, tela); } public void registrarMensagem(String mensagem) { for (Session sessao : sessoes) { if ("geolocalizacao".equals(telas.get(sessao))) { sessao.getAsyncRemote().sendText(mensagem); } else if (telas.get(sessao).startsWith("embarcacao")) { String codigo = Json.createReader(new StringReader(mensagem)).readObject().getString("embarcacao"); if (("embarcacao" + codigo).equals(telas.get(sessao))) { sessao.getAsyncRemote().sendText(mensagem); } } } } public void excluir(Session sessao) { sessoes.remove(sessao); telas.remove(sessao); } public static WebSocketManager getInstance() { if (instance == null) { instance = new WebSocketManager(); } return instance; } private WebSocketManager() { } }