package com.github.czyzby;
import com.badlogic.gdx.Application;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.github.czyzby.websocket.WebSocket;
import com.github.czyzby.websocket.WebSocketAdapter;
import com.github.czyzby.websocket.WebSockets;
import com.github.czyzby.websocket.data.WebSocketCloseCode;
import com.github.czyzby.websocket.net.ExtendedNet;
public class Core extends ApplicationAdapter {
private SpriteBatch batch;
private BitmapFont font;
private WebSocket socket;
@Override
public void create() {
Gdx.app.setLogLevel(Application.LOG_DEBUG);
batch = new SpriteBatch();
font = new BitmapFont();
// Note: you can also use WebSockets.newSocket() and WebSocket.toWebSocketUrl() methods.
socket = ExtendedNet.getNet().newWebSocket("localhost", 8000);
socket.addListener(getListener());
socket.connect();
}
private static WebSocketAdapter getListener() {
return new WebSocketAdapter() {
@Override
public boolean onOpen(final WebSocket webSocket) {
Gdx.app.log("WS", "Connected!");
webSocket.send("Hello from client!");
return FULLY_HANDLED;
}
@Override
public boolean onClose(final WebSocket webSocket, final WebSocketCloseCode code, final String reason) {
Gdx.app.log("WS", "Disconnected - status: " + code + ", reason: " + reason);
return FULLY_HANDLED;
}
@Override
public boolean onMessage(final WebSocket webSocket, final String packet) {
Gdx.app.log("WS", "Got message: " + packet);
return FULLY_HANDLED;
}
};
}
@Override
public void render() {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
font.draw(batch, socket.getState().name(), 10f, Gdx.graphics.getHeight() / 2f);
batch.end();
}
@Override
public void dispose() {
WebSockets.closeGracefully(socket); // Null-safe closing method that catches and logs any exceptions.
batch.dispose();
font.dispose();
}
}