package earth.krakatao; import earth.krakatao.protocol.KraSocketClientProtocol; import earth.krakatao.protocol.KraSocketClientProtocolMessage; import earth.krakatao.events.KraSocketClientEventInitiater; import java.net.URI; import java.nio.ByteBuffer; import org.java_websocket.client.WebSocketClient; import org.java_websocket.handshake.ServerHandshake; public class SocketClient extends WebSocketClient { private final KraSocketClientProtocol kraProtocol; private final KraSocketClientEventInitiater kraSocketClientEventInitiater; public SocketClient(URI serverUri, KraSocketClientEventInitiater kraSocketClientEventInitiater, KraSocketClientProtocol kraProtocol) { super(serverUri); this.kraSocketClientEventInitiater = kraSocketClientEventInitiater; this.kraProtocol = kraProtocol; } public void SendMessage(KraSocketClientProtocolMessage kraProtocolMessage) { if (isOpen()) { send(this.kraProtocol.EncodeMessage(kraProtocolMessage)); } } @Override public void onOpen(ServerHandshake serverHandshake) { this.kraSocketClientEventInitiater.callOnOpen(serverHandshake); System.out.println("open"); } @Override public void onMessage(String s) { System.out.println("message s: "+ s); } @Override public void onMessage(ByteBuffer byteBuffer) { KraSocketClientProtocolMessage kraProtocolMessage = new KraSocketClientProtocol().DecodeMessage(byteBuffer.array()); this.kraSocketClientEventInitiater.callOnMessage(kraProtocolMessage); System.out.println("msg b:" + byteBuffer); } @Override public void onClose(int code, String reason, boolean remote) { this.kraSocketClientEventInitiater.callOnClose(code, reason, remote); System.out.println("close: " + code + " " +reason + " " +remote); } @Override public void onError(Exception e) { System.out.println("Error: " + e); } }