2016-05-25 16 views
0

最近Angular2で開始しました。 this articleを読んだ後、私はウェブソケットとリアクティブエクステンションを使いたいと思っていました。コンパイルされた記事のwebsocketクラスを使用しました。私はngOnInitメソッドから呼びたいと思っていました。私はこれを行う方法が完全にはわかりません。だから私はクラスの新しいスタンスを作成し、ラッパーメソッドを初期化しましたが、うまくいきませんでした。メソッドを初期化するための構文が少し不明です。エラーTS2339: '_ws'プロパティが 'void'型に存在しません

ありがとうございます。

let message = 'test'; 
let ws = new WebSocketService(); 
let sock = ws.initializeWebSocket('www.google.com'); 

sock._ws.send(); 

sock._ws.close(); 



import { Injectable } from '@angular/core'; 
import {Observable}  from 'rxjs/Observable'; 
import 'rxjs/Rx'; 


@Injectable() 
export class WebSocketService { 
    private _wsObservable; 
    private _ws; 
    private _url ='www.google.com'; 
    initializeWebSocket(_url) { 
     this._wsObservable = Observable.create((observer) => { 

      console.log('this._wsObservable'); 

      this._ws = new WebSocket(_url); 

      this._ws.onopen = (e) => { 
       console.log('onopen'); 

      }; 

      this._ws.onclose = (e) => { 
       console.log('onclose'); 
       if (e.wasClean) { 
        observer.complete(); 
       } else { 
        observer.error(e); 
       } 
      }; 

      this._ws.onerror = (e) => { 
       console.log('onopen'); 
       observer.error(e); 
      }; 

      this._ws.onmessage = (e) => { 
       console.log("this._wsObservable"); 
       observer.next(JSON.parse(e.data)); 
      }; 

      return() => { 
       this._ws.close(); 
      }; 

     }).share(); 

    } 

} 
+0

'initializeWebSocket(_url)にthisを結合していないとして、あなたはこのエラーを得ています'は何も返さず、' sock._ws.send(); 'と同じように使用しています。そのため型は 'void'(何も返さない関数)です。 – rinukkusu

答えて

1

@Injectable() 
export class WebSocketService { 
    private _wsObservable; 
    private _ws; 
    private self = this; 
    private _url ='www.google.com'; 
    initializeWebSocket(_url) { 

を試してみて、selfthisのインスタンスを置き換える - annon機能Observable.createは、発信者

関連する問題