我有一個運行在端口3000上的流星應用程序。
然後我有一個離子應用程序服務於一個簡單的客戶端。
我想查看在離子應用中流星應用中的數據。
我創建了一個服務:Android上的Ionic和WebSocket
(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客戶端:我可以擺脫流星應用程序數據(在運行命令ionic serve
的Web客戶機上使用帶有ddp.js實現的DDP協議)。
當我嘗試ionic emulate android
時,我無法看到AVD中的數據,並且在LogCat面板中出現'ReferenceError:WebSocket未定義'。
我試圖安裝'cordova plugin add https://github.com/knowledgecode/WebSocket-for-Android.git',但沒有成功。我如何在離子應用中使用websockets和ororid目標?
有一個sockjs實現模擬websocket。我將'sockjs-0.3.4.min.js'添加到了我的腳本中,並且替換爲: var options = {endpoint:「ws:// localhost:3000/websocket」, SocketConstructor:WebSocket }; 用: VAR選項= { 端點: 「HTTP://本地主機/ sockjs」, SocketConstructor:SockJS }; – 2014-10-08 12:29:58