У меня есть следующие объявления в файле app.js:
(function () {
angular.module('medmart', [
'oc.lazyLoad',
'ui.bootstrap',
'ngFileUpload',
'ui.validate',
'btford.socket-io',
]).
factory('mySocket', function (socketFactory) {
var mySocket = socketFactory({
prefix: 'medmart~',
ioSocket: io.connect('https://:::8443'),
});
mySocket.forward('error');
return mySocket;
});
})();
И в моем index.html у меня есть следующие утверждения:
<script src="js/angular/angular.min.js"></script>
<script src="js/plugins/oclazyload/dist/ocLazyLoad.min.js"></script>
<script src="js/ui-router/angular-ui-router.min.js"></script>
<script src="js/bootstrap/ui-bootstrap-tpls-0.12.0.min.js"></script>
<script src="js/plugins/ng-file-upload/ng-file-upload.min.js"></script>
для <script src="js/plugins/ng-file-upload/ng-file-upload.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script src="js/plugins/angular-socket-io/socket.js"></script>
И в controlers.js у меня есть следующее:
mySocket.forward('medmart~procedure', $scope);
$scope.user = {
fname: '',
lname: '',
pid: ''
};
$scope.setCredentials = function() {
$scope.user.fname = $rootScope.user.fname;
$scope.user.lname = $rootScope.user.lname;
$scope.user.pid = $rootScope.user.pid;
};
$scope.setCredentials();
mySocket.on('connect', function () {
$scope.$on('socket:error', function (ev, data) {
console.log("ERROR: " + data)
});
$scope.$on('medmart~procedure', function(event, data) {
if (!data.payload) {
return;
}
$scope.$apply(function() {
});
});
});
В моем routs.js(Node.js) я отправляю следующее: socket.emit('medmart~procedure', procedure);
Однако я не могу получать сообщения в контроллере. Может кто-нибудь сказать мне, что я делаю неправильно?
Заранее спасибо.
Я смог наконец разобраться в этом вопросе. Вместо
$scope.$on('procedure:new', function(data){...});
должен быть:
mySocket.on('procedure:new', function(data){...});
Я смог решить проблему, пройдя эту демонстрацию: https://github.com/btford/angular-socket-io-im