package fr.lyrgard.hexscape.client.network; import java.io.IOException; import java.net.URI; import org.eclipse.jetty.websocket.client.ClientUpgradeRequest; import org.eclipse.jetty.websocket.client.WebSocketClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import fr.lyrgard.hexScape.message.AbstractMessage; import fr.lyrgard.hexScape.message.json.MessageJsonMapper; import fr.lyrgard.hexScape.model.player.User; public class ClientNetwork { private static final Logger LOGGER = LoggerFactory.getLogger(ClientNetwork.class); private static final ClientNetwork INSTANCE = new ClientNetwork(); public static ClientNetwork getInstance() { return INSTANCE; } private ClientNetwork() { } ClientWebSocket socket; WebSocketClient client; public void connect(User user, String url) { if (socket == null) { String destUri = "ws://" + url; client = new WebSocketClient(); client.getPolicy().setMaxTextMessageSize(1000000); socket = new ClientWebSocket(user); try { client.start(); URI echoUri = new URI(destUri); ClientUpgradeRequest request = new ClientUpgradeRequest(); client.connect(socket, echoUri, request); LOGGER.info("Connecting to : %s%n", echoUri); } catch (Throwable t) { t.printStackTrace(); client = null; } } } public void disconnect() { if (socket != null) { try { client.stop(); } catch (Exception e) { e.printStackTrace(); } socket = null; } } public void send(AbstractMessage message) { if (socket != null) { try { socket.getSession().getRemote().sendString(MessageJsonMapper.getInstance().toJson(message)); System.out.println("Sent message " + message.getClass() + " to server"); } catch (IOException e) { e.printStackTrace(); } } } }