package mediabrowser.apiinteraction.websocket;
import mediabrowser.model.logging.ILogger;
import org.java_websocket.WebSocket;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.*;
import org.java_websocket.handshake.ServerHandshake;
import java.net.URI;
import java.util.Map;
public class JavaWebSocketClient extends WebSocketClient {
private ILogger _logger;
private ISocketListener listener;
public JavaWebSocketClient(ILogger logger, URI serverURI, ISocketListener listener) {
super(serverURI);
_logger = logger;
this.listener = listener;
}
@Override
public void onOpen(ServerHandshake serverHandshake) {
_logger.Info("Web socket connection opened.");
listener.onOpen();
}
@Override
public void onMessage(String s) {
_logger.Debug("Web socket message received.");
listener.onMessage(s);
}
@Override
public void onClose(int i, String s, boolean b) {
_logger.Info("Web socket connection closed.");
listener.onClose();
}
@Override
public void onError(Exception e) {
_logger.ErrorException("Web socket error.", e);
}
public boolean IsWebSocketOpen(){
WebSocket.READYSTATE state = getReadyState();
return state == WebSocket.READYSTATE.OPEN;
}
public boolean IsWebSocketOpenOrConnecting(){
WebSocket.READYSTATE state = getReadyState();
return state == WebSocket.READYSTATE.OPEN || state == WebSocket.READYSTATE.CONNECTING;
}
}