0

ポート 3000 で流星アプリケーションを実行してい
ます。次に、単純なクライアントにサービスを提供する ionic アプリケーションを使用しています。
私は、イオンアプリケーションで隕石アプリケーションに提出されたデータを見たいと思っています。
サービスを作成しました:

(function () {
angular.module('myApp').factory('myApi', ['$q', '$rootScope', myApi]);
function myApi($q, $rootScope) {
    var options = {
        endpoint: "ws://localhost:3000/websocket",
        SocketConstructor: WebSocket
    };
    var ddp = new DDP(options);
    ddp.on("connected", function () {
        console.log("Connected");
        ddp.sub("allHistory");
    });

    function on(callback) {
        ddp.on("added", function (data) {
            console.log("on added", data.fields.value);
            var item = { value: data.fields.value, date: data.fields.date };
            callback(item);
        });
    };
    return {
        on: on,
    };
}
})();

コントローラ:

angular.module('myApp').controller('MyController',
function EventController($scope, myApi) {
   myApi.on(function (data) {
        $scope.history.push(data);
    });
    $scope.history = [];
}
);

ビュー:

 <div ng-controller="MyController" style="padding-left:20px; padding-right:20px">
    <ul class="thumbnails">
        <li ng-repeat="item in history">
            <div class="row span9">
               <span>Date: {{item.date}}</span>
               <span>Value: {{item.value}}</span>
            </div>
        </li>
    </ul>
</div>

すべてが Web クライアントを使用して機能します: コマンドを実行している Web クライアントで (ddp.js 実装で DDP プロトコルを使用して) meteor アプリケーションからデータを取得できますionic serve
を試してみるとionic emulate android、AVD にデータが表示されず、LogCat パネルに「ReferenceError: WebSocket が定義されていません」というメッセージが表示されます。「cordova plugin add https://github.com/knowledgecode/WebSocket-for-Android.git
」をインストールしようとしましたが、成功しませんでした。android ターゲットを使用してイオンアプリケーション内で websockets を使用するにはどうすればよいですか?

4

3 に答える 3

0

わかりましたので、 SockJSを使用して最終的に機能するようになりました。サーバーとクライアントの両方にインストールする必要があり、このコードを使用する代わりに:

var options = {
    endpoint: "ws://localhost:3000/websocket",
    SocketConstructor: WebSocket
};
var ddp = new DDP(options);
ddp.on("connected", function () {
    console.log("Connected");
});

私はこのコードを使用しました:

  var options = {
      endpoint: "https://localhost:3000/echo", // echo is the prefix i set on server-side
      SocketConstructor: SockJS
  };
  var ddp = new DDP(options);
  ddp.on("connected", function () {
      console.log("Connected");
  });

というわけで、これでつながりました。しかし、モバイルに展開すると「Access-Control-Allow-Origin」が設定されていないことがわかりました.ブラウザでは問題なく動作しますが、Androidデバイスではこのエラーが発生します...コメントできません質問についてまだ十分な評判が得られていないため、回答で別の質問をして申し訳ありません...しかし、どうにかしてこの「アクセス制御...」の問題を修正できますか?

ありがとうございます。

于 2015-02-10T18:36:17.337 に答える