私は現在、Web ベースの Twitter クライアントで作業しているため、angular.js、node.js、socket.io を使用しました。サービスが新しいツイートを待機するクライアントに、socket.io 経由で新しいツイートをプッシュします。新しいツイートが届くと、サービスは $broadcast を介してイベントを送信します。
私のコントローラーにはイベントリスナーがあり、着信ツイートは別の関数で処理されています。この関数は、単に新しいツイートをツイート スコープにプッシュするだけです。
今、私の問題は、ビューが更新されていないことですが、スコープが拡大していることがわかります。多分あなたの1人がアイデアを持っています、どうすればこれを解決できますか?
さらに私のコード:
サービス:
(function () {
app.factory('Push', ['$rootScope', function ($rootScope) {
socket.on('new-tweet', function (msg) {
$rootScope.$broadcast('new-tweet', msg);
});
}]);
}());
コントローラ:
(function () {
app.controller("StreamCtrl", function StreamCtrl ($scope, $rootScope, $http, Push) {
$scope.tweets = [];
$http
.get('/stream')
.then(function (res) {
$scope.tweets = res.data;
});
$scope.addTweet = function (data) {
$scope.tweets.push(data);
console.log($scope.tweets);
};
$rootScope.$on('new-tweet', function (event, data) {
if (!data.friends) {
$scope.addTweet(data);
}
});
});
}());
プロジェクト全体はこちら: https://github.com/hochitom/node-twitter-client