我正在客户端上使用Angular开发应用程序。该应用程序有一组可以重新排序的幻灯片,如下所示:
<div ng-controller="SortableCTRL">
<ul id="sortable">
<li ng-repeat="item in sortableArray" ng-bind="item"></li>
</ul>
<button ng-click="add()">Add</button>
<hr>
<pre ng-bind="sortableArray|json"></pre>
</div>
JS:
$scope.sortableArray = [
'One', 'Two', 'Three'
];
$scope.add = function() {
$scope.sortableArray.push('Item: '+$scope.sortableArray.length);
sortableEle.refresh();
}
$scope.dragStart = function(e, ui) {
ui.item.data('start', ui.item.index());
}
$scope.dragEnd = function(e, ui) {
var start = ui.item.data('start'),
end = ui.item.index();
$scope.sortableArray.splice(end, 0,
$scope.sortableArray.splice(start, 1)[0]);
$scope.$apply();
}
sortableEle = $('#sortable').sortable({
start: $scope.dragStart,
update: $scope.dragEnd
});
}
http://jsfiddle.net/dj_straycat/Q5FWt/3/
应用程序可以由多个人访问,因此,在添加/重新排序幻灯片时进行推送通知会很有用。在搜索时我发现socket.io是正确的方法;但我工作的公司尚未批准socket.io。有没有办法在不使用socket.io的情况下执行此操作?
答案 0 :(得分:4)
如果没有某种套接字,您将无法拥有确切的功能。您需要实现轮询或心跳类解决方案。每隔X分钟对后端进行一次小检查,看看是否发生了任何变化。
虽然它与实时不一样。但它可能是你在平均时间内最接近的。
如果&amp;当您的公司批准该服务时,似乎有很多使用Angular + Socket的示例。或者,您也可以考虑使用FireBase - 或者更确切地说AngularFire。
答案 1 :(得分:2)
首先,了解术语&#34; push notifications&#34; 意味着服务器非常重要有一个服务,将通知从服务器推送到客户端,在我们的例子中,客户端是有角度的。
所以正确的问题是,哪种服务器技术可用于推送通知,幸运的是,我们拥有广泛的服务器和推送通知技术。
在node.js中我们有 socket.io ,微软的 asp.net 有signalR,最后这个服务抽象的方式我们通过使用后备意义来推送通知,如果我们的浏览器支持websocket,它将使用此连接,否则回退到long pulling等,所以为了简短说明并回答您的问题,您不要我必须使用 socket.io ,但你需要一台服务器,为您提供一个简单的服务来推送您的数据,您甚至可以实现自己的推送服务,如this示例。< / p>