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

cn.mapway.ui.client.mqtt.MqttJsClient Maven / Gradle / Ivy

There is a newer version: 2.3.0
Show newest version
package cn.mapway.ui.client.mqtt;

import cn.mapway.ui.client.mqtt.event.MqttMessage;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.shared.GWT;


/**
 * MQTT JavaSCript 客户端.
 *
 * @author zhangjianshe
 */
public class MqttJsClient extends JavaScriptObject {

    /**
     * Instantiates a new mqtt js client.
     */
    protected MqttJsClient() {

    }


    /**
     * 创建MQTT客户端.
     *
     * @param host the host
     * @param port the port
     * @param id   the id
     * @param path the path
     * @return the mqtt js client
     */
    public static final native MqttJsClient create(String host, int port, String id, String path)/*-{
		console.log("init mqtt client" + host + ":" + port + "@" + id);
		client = new Paho.MQTT.Client(host, Number(port), path, id);
		console.log(client);
		client.isConnected = false;
		return client;
  }-*/;

    /**
     * 添加事件处理器.
     *
     * @param h the h
     */
    public final native void addHandler(IMqttHandler h)/*-{
        this.handler = h;
        var _this = this;
        if (this.handler != null) {
            this.onConnectionLost = function(e) {
                [email protected]::onConnectionLost(Lcn/mapway/ui/client/mqtt/MqttJsClient;Lcn/mapway/ui/client/mqtt/event/ConnectionLostEvent;)
                (_this,e);
            }
            this.onMessageArrived = function(e) {
                [email protected]::onMessageArrived(Lcn/mapway/ui/client/mqtt/MqttJsClient;Lcn/mapway/ui/client/mqtt/event/MessageArriveEvent;)
                (_this,e);
            }
        }
  }-*/;


    /**
     * 连接MQTT.
     *
     * @param userId the user id
     * @param token  the token
     */
    public final void connect(String userId, String token) {
        GWT.log("connect as " + getId() + " " + userId + " " + token);
        innerconnect(userId, token);
    }

    /**
     * Innerconnect.
     */
    private final native void innerconnect(String userId, String token)/*-{
		var _this = this;
		if (_this.handler == null) {
			this.connect({

			});
		} else {
			this
					.connect({

						onSuccess : function(e) {
							_this.isConnected = true;
							[email protected]::onConnect(Lcn/mapway/ui/client/mqtt/MqttJsClient;)(_this);
						},
						onFailure : function(e) {
							_this.isConnected = false;
							_this.handler
									[email protected]::onConnetFailed(Lcn/mapway/ui/client/mqtt/MqttJsClient;Ljava/lang/String;)(
											_this, e.errorMessage);
						}
					});
		}
  }-*/;

    /**
     * Close.
     */
    public final native void close()/*-{
		this.disconnect();
  }-*/;

    /**
     * Sets the id.
     *
     * @param id the new id
     */
    public final native void setId(String id)/*-{
		this.clientId = id;
  }-*/;

    /**
     * Gets the id.
     *
     * @return the id
     */
    public final native String getId()/*-{
		return this.clientId;
  }-*/;

    /**
     * Sub.
     *
     * @param topic the topic
     */
    public final native void sub(String topic)
  /*-{
		this.subscribe(topic);
		console.log("subscribe to " + topic);
  }-*/;

    /**
     * Unsub.
     *
     * @param topic the topic
     */
    public final native void unsub(String topic)
  /*-{
		this.unsubscribe(topic);
		console.log("unsubscribe to " + topic);
  }-*/;

    /**
     * Pub.
     *
     * @param msg the msg
     */
    public final native void pub(MqttMessage msg)/*-{
		this.send(msg);
  }-*/;

    /**
     * Checks if is connect.
     *
     * @return true, if is connect
     */
    public final native boolean isConnect()/*-{
		return this.isConnected;
  }-*/;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy