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

60 lines
1.8 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));
}
}
@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);
}
}