可以在没有socket.io的情况下在AngularJS中发送通知吗?

时间:2014-03-25 21:17:24

标签: jquery angularjs socket.io

我正在客户端上使用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的情况下执行此操作?

2 个答案:

答案 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>

相关问题