【发布时间】:2015-04-16 08:12:48
【问题描述】:
我使用 Autobahn.js 进行网络套接字连接(我需要订阅套接字事件)。
我使用 $timeout 来检查套接字事件。但我认为,这是错误的,不正确的不是最佳的,我不想在控制器中使用 $timeout,也许承诺对我有帮助? 如何在没有 $timeout 的情况下在控制器中捕获套接字消息?
app.factory('socket',['$rootScope',
function($rootScope) {
var pubsub = new ab.Session(
'wss://site.com/',
function(session) {
return session;
},
function(code, reason) {
}
);
return {
pubsub: pubsub
};
}]);
app.controller('mainCtrl', ['$timeout', 'socket', function($timeout, socket) {
$timeout(function() {
$scope.data = socket.pubsub.subscribe('3434424234324', function(topic, data) {
// do something if data.
// data contains socket message.
});
}, 300);
}]);
//3434424234324 - subscriber id
【问题讨论】:
-
我发现github.com/gdi2290/angular-websocket 上的示例对我的项目很有帮助,工厂正在返回对数据流的引用,而在控制器内部,您可以将其分配给您的 $scope 变量之一。使用高速公路,您可以在这里做类似的事情。请注意,每当数据流发生变化时,angular 都会检测到它,这样您就不必手动添加 $timeout 函数来包装它。
-
谢谢,但是我的代码实现如何?你能写吗 ? :)
标签: angularjs sockets factory angular-promise autobahn