2017-02-16 18 views
0

AMQJS0005E内部エラーです。エラーメッセージ:未定義のプロパティ '購読'を読み取ることができませんpaho mqtt javascriptクライアントはトピックを購読できません

私はEclipseアプリをjavahクライアントクライアントライブラリに含めました。 接続は確立されていますが、トピックを購読することはできません。 は、ここで私が使用したコード..です

import { Component } from '@angular/core'; 
 
import { NavController, NavParams ,MenuController } from 'ionic-angular'; 
 
import { Setuser } from '../../providers/setuser'; 
 
import { Platform } from 'ionic-angular'; 
 
import { Paho} from 'ng2-mqtt/mqttws31'; 
 
/* 
 
    Generated class for the Usershome page. 
 

 
    See http://ionicframework.com/docs/v2/components/#navigation for more info on 
 
    Ionic pages and navigation. 
 
*/ 
 
@Component({ 
 
    selector: 'page-usershome', 
 
    templateUrl: 'usershome.html' 
 
}) 
 
export class UsershomePage { 
 
    client :any; 
 
    message :any; 
 

 
    constructor(public navCtrl: NavController, public navParams: NavParams,public menu:MenuController,public setUserProvider: Setuser,public platform:Platform) { 
 
    \t this.menu.open(); 
 
    
 
    } 
 
    
 

 
    ionViewDidLoad() { 
 
    this.menu.enable(true); 
 
    console.log('ionViewDidLoad UsershomePage'); 
 
    } 
 
    exitApp(){ 
 
    console.log("----------"); 
 
    this.platform.exitApp(); 
 
    } 
 
    connectToMqtt(){ 
 
    this.client = new Paho.MQTT.Client("test.mosquitto.org",8080,"abc"); 
 

 
// set callback handlers 
 
this.client.onConnectionLost = this.onConnectionLost; 
 
this.client.onMessageArrived = this.onMessageArrived; 
 

 
// connect the client 
 
this.client.connect({onSuccess:this.onConnect}); 
 
} 
 

 
// called when the client connects 
 
onConnect() { 
 
    // Once a connection has been made, make a subscription and send a message. 
 
    console.log("onConnect"); 
 
    this.client.subscribe("mitsuruog"); 
 
    this.message = new Paho.MQTT.Message("Hello"); 
 
    this.message.destinationName = "World"; 
 
    this.client.send(this.message); 
 
} 
 

 
// called when the client loses its connection 
 
onConnectionLost(responseObject) { 
 
    if (responseObject.errorCode !== 0) { 
 
    console.log("onConnectionLost:"+responseObject.errorMessage); 
 
    } 
 
} 
 

 
// called when a message arrives 
 
onMessageArrived(message) { 
 
    console.log("onMessageArrived:"+message.payloadString); 
 
} 
 
    
 
    
 

 
    
 

 
}

+0

これは、 'this'は、あなたがたときに' onConnect'でそれがないと思う何を指していない、スコープの問題であり、折り返し電話 – hardillb

答えて

0

あなたの当面の問題は、はすべてthis.を除去することで、あなたのための驚くほど、ライン

this.client.connect({onSuccess:this.onConnect.bind(this)}); 

を変更することで解決できる場合、またはclientおよびmessageの前には、があります。

JavaScriptで正確にはthisを意味するものを学ぶ必要があります。 JavaやC#と同じではありません。削除の効果を理解するには、クロージャと矢印の機能について学んでください。

良い出発点(あなたの質問は、実際にこの1の重複としてフラグを立てることができます): How to access the correct `this` context inside a callback?

関連する問題