in content/lib/paho-mqtt.js [886:917]
ClientImpl.prototype.subscribe = function (filter, subscribeOptions) {
this._trace("Client.subscribe", filter, subscribeOptions);
if (!this.connected)
throw new Error(format(ERROR.INVALID_STATE, ["not connected"]));
var wireMessage = new WireMessage(MESSAGE_TYPE.SUBSCRIBE);
wireMessage.topics=[filter];
if (subscribeOptions.qos !== undefined)
wireMessage.requestedQos = [subscribeOptions.qos];
else
wireMessage.requestedQos = [0];
if (subscribeOptions.onSuccess) {
wireMessage.onSuccess = function(grantedQos) {subscribeOptions.onSuccess({invocationContext:subscribeOptions.invocationContext,grantedQos:grantedQos});};
}
if (subscribeOptions.onFailure) {
wireMessage.onFailure = function(errorCode) {subscribeOptions.onFailure({invocationContext:subscribeOptions.invocationContext,errorCode:errorCode, errorMessage:format(errorCode)});};
}
if (subscribeOptions.timeout) {
wireMessage.timeOut = new Timeout(this, window, subscribeOptions.timeout, subscribeOptions.onFailure,
[{invocationContext:subscribeOptions.invocationContext,
errorCode:ERROR.SUBSCRIBE_TIMEOUT.code,
errorMessage:format(ERROR.SUBSCRIBE_TIMEOUT)}]);
}
// All subscriptions return a SUBACK.
this._requires_ack(wireMessage);
this._schedule_message(wireMessage);
};