64 lines
2.0 KiB
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);
|
|
}
|
|
}
|