KraSocketClient/src/main/java/earth/krakatao/SocketClient.java

64 lines
2.0 KiB
Java

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));
}
}
public void Reconnect() {
KraSocketClient.getLogger().info("Reconnect...");
reconnect();
}
@Override
public void onOpen(ServerHandshake serverHandshake) {
this.kraSocketClientEventInitiater.callOnOpen(serverHandshake);
KraSocketClient.getLogger().info("connection open");
}
@Override
public void onMessage(String s) {
}
@Override
public void onMessage(ByteBuffer byteBuffer) {
KraSocketClientProtocolMessage kraProtocolMessage = new KraSocketClientProtocol().DecodeMessage(byteBuffer.array());
this.kraSocketClientEventInitiater.callOnMessage(kraProtocolMessage);
KraSocketClient.getLogger().info("rec msg " + kraProtocolMessage);
}
@Override
public void onClose(int code, String reason, boolean remote) {
this.kraSocketClientEventInitiater.callOnClose(code, reason, remote);
KraSocketClient.logger.warning("connection closed. Code: " + code + " reason: " +reason + " remote: " +remote);
}
@Override
public void onError(Exception e) {
KraSocketClient.getLogger().warning("Err: " + e);
}
}