All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.relayr.java.websocket.WebSocket Maven / Gradle / Ivy

package io.relayr.java.websocket;

import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttAsyncClient;
import org.eclipse.paho.client.mqttv3.MqttException;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import rx.Observable;

abstract class WebSocket {

    protected static final Object mLock = new Object();
    protected Map> mTopicCallbacks = new HashMap<>();

    protected static final int CONNECT_TIMEOUT = 10000;
    protected static final int SUBSCRIBE_TIMEOUT = 2000;
    protected static final int UNSUBSCRIBE_TIMEOUT = 1000;

    protected MqttAsyncClient mClient = null;

    public WebSocket() {
        SslUtil.init();
    }

    public boolean isConnected() {
        return mClient != null && mClient.isConnected();
    }

    protected void publish(String topic, String payload) throws MqttException {
        final byte[] data = payload == null ? new byte[]{} : payload.getBytes();
        final IMqttDeliveryToken publishToken = mClient.publish(topic, data, 0, false);
        publishToken.waitForCompletion();
    }

    abstract Observable createClient(T object);

    abstract boolean subscribe(String topic, String channelId, final WebSocketCallback callback);

    abstract boolean unSubscribe(String topic);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy