【发布时间】:2014-11-29 21:51:02
【问题描述】:
我有一个在端口 3000 上运行的流星应用程序。
然后我有一个为简单客户端提供服务的离子应用程序。
我想在离子应用程序中查看流星应用程序中的数据。
我创建了一个服务:
(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 插件添加 https://github.com/knowledgecode/WebSocket-for-Android.git”但没有成功。如何在具有 andorid 目标的 ionic 应用程序中使用 websocket?
【问题讨论】:
-
有一个模拟websockets的sockjs实现。我在脚本中添加了 'sockjs-0.3.4.min.js' 并替换了: var options = { endpoint: "ws://localhost:3000/websocket", SocketConstructor: WebSocket }; with: var options = { 端点: "localhost/sockjs", SocketConstructor: SockJS };