diff --git a/app/templates/bower.json b/app/templates/bower.json index 9548a126..7032949f 100644 --- a/app/templates/bower.json +++ b/app/templates/bower.json @@ -27,7 +27,9 @@ "tinymce-dist": "4.3.12", "vkbeautify": "*", "ml-highcharts-ng": "~0.0.11", - "view-file-ng": "^0.1.1" + "view-file-ng": "^0.1.1", + "socket.io-client": "^1.7.2", + "angular-socket-io": "^0.7.0" }, "overrides": { "angular-highlightjs": { @@ -46,6 +48,11 @@ "main": [ "vkbeautify.js" ] + }, + "socket.io-client": { + "main": [ + "dist/socket.io.js" + ] } }, "devDependencies": { diff --git a/app/templates/node-server/node-app.js b/app/templates/node-server/node-app.js index c361d0c0..bd66e80e 100644 --- a/app/templates/node-server/node-app.js +++ b/app/templates/node-server/node-app.js @@ -97,6 +97,22 @@ if (options.nodeJsCertificate) { server = http.createServer(app); } +var io = require('socket.io')(server); +io.on('connection', function(socket){ + // console.log('a user connected'); + + // io.emit() sends a message to client on the 'server' channel + // io.emit('server', 'hi client'); + socket.on('disconnect', function(){ + // console.log('user disconnected'); + }); + socket.on('client', function(val){ + // listening for message from client + // console.log('client', val); + }); +}); + + server.listen(port, function() { console.log('Express server listening on port ' + port); console.log('env = ' + app.get('env') + diff --git a/app/templates/package.json b/app/templates/package.json index 828bc6b7..bbec6d5e 100644 --- a/app/templates/package.json +++ b/app/templates/package.json @@ -11,6 +11,7 @@ "passport": "^0.3.2", "passport-local": "^1.0.0", "q": "^1.4.1", + "socket.io": "^1.7.3", "underscore": "^1.8.3", "www-authenticate": "^0.6.2" }, diff --git a/app/templates/ui/app/app.js b/app/templates/ui/app/app.js index a2c06e02..f223f51d 100644 --- a/app/templates/ui/app/app.js +++ b/app/templates/ui/app/app.js @@ -11,6 +11,9 @@ // top-level state 'app.root' + + //socket io + , 'btford.socket-io' ]); }()); diff --git a/app/templates/ui/app/root/root.controller.js b/app/templates/ui/app/root/root.controller.js index 40b833dc..340bf756 100644 --- a/app/templates/ui/app/root/root.controller.js +++ b/app/templates/ui/app/root/root.controller.js @@ -5,10 +5,16 @@ .controller('RootCtrl', RootCtrl); RootCtrl.$inject = ['messageBoardService', 'userService', '$scope', - '$state', 'appConfig']; + '$state' + , 'appConfig' + , 'socket' + ]; - function RootCtrl(messageBoardService, userService, $scope, - $state, appConfig) { + function RootCtrl(messageBoardService, userService, $scope + , $state + , appConfig + , socket + ) { var rootCtrl = this; rootCtrl.currentYear = new Date().getUTCFullYear(); @@ -17,6 +23,10 @@ $scope.$watch(userService.currentUser, function(newValue) { rootCtrl.currentUser = newValue; + // sample code to send message to server + if (newValue) { + socket.emit('client', newValue); + } }); $scope.$watch(function() { @@ -24,5 +34,14 @@ }, function(newValue) { rootCtrl.currentState = newValue; }); + + + $scope.$on('socket:server', function (event, data) { + // event: just contains description of the event + // data: contains the message + console.log('event', event); + console.log('data', data); + }); + } }()); diff --git a/app/templates/ui/app/socket/socket.factory.js b/app/templates/ui/app/socket/socket.factory.js new file mode 100644 index 00000000..a313ca06 --- /dev/null +++ b/app/templates/ui/app/socket/socket.factory.js @@ -0,0 +1,12 @@ +(function () { + 'use strict'; + + angular.module('app') + .factory('socket', ['socketFactory', function (socketFactory) { + var mySocket = socketFactory(); + mySocket.forward('server'); + return mySocket; + }]) + ; + +}());