package com.github.czyzby.websocket; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.utils.Array; import com.github.czyzby.kiwi.util.gdx.collection.GdxArrays; import com.github.czyzby.shared.json.JsonClientArrayMessage; import com.github.czyzby.shared.json.JsonClientListMessage; import com.github.czyzby.shared.json.JsonClientMessage; import com.github.czyzby.shared.json.ServerResponse; import com.github.czyzby.websocket.WebSocketHandler.Handler; import com.github.czyzby.websocket.serialization.impl.JsonSerializer; /** Tests {@link JsonSerializer}. * * @author MJ */ public class JsonWebSocketTest extends AbstractWebSocketTest { @Override protected int getPort() { return 8001; } @Override public void send(final String message) { final JsonClientMessage packet = new JsonClientMessage(); packet.message = message; sendPacket(packet); } @Override public void send(final String[] message) { final JsonClientArrayMessage packet = new JsonClientArrayMessage(); packet.message = message; sendPacket(packet); } @Override public void send(final String message, int times) { final Array<JsonClientMessage> messages = GdxArrays.newArray(JsonClientMessage.class); while (times-- > 0) { final JsonClientMessage packet = new JsonClientMessage(); packet.message = message; messages.add(packet); } final JsonClientListMessage list = new JsonClientListMessage(); list.messages = messages; sendPacket(list); } private void sendPacket(final Object packet) { final long start = System.currentTimeMillis(); final byte[] serialized = getSocket().getSerializer().serialize(packet); final long time = System.currentTimeMillis() - start; Gdx.app.log("JSON", "Serialized packet in " + time + " millies."); getSocket().send(serialized); } @Override protected void registerSerializer(final WebSocket socket) { // JsonSerializer is already the default object serializer. } @Override protected WebSocketListener createListener() { final WebSocketHandler handler = new WebSocketHandler(); handler.registerHandler(ServerResponse.class, new Handler<ServerResponse>() { @Override public boolean handle(final WebSocket webSocket, final ServerResponse packet) { getListener().onMessage(packet.message); return WebSocketHandler.FULLY_HANDLED; } }); return handler; } }