From 65c6d1ffe06b8d44a6fa60ad7d3bd375d4e666cb Mon Sep 17 00:00:00 2001 From: mleanos Date: Sat, 25 Jul 2015 00:36:01 -0700 Subject: [PATCH] Socket IO client enhancement with connect() method Updated the Socket client service, with a connect() method. Moved state redirect out of from Socket service. Added the Authentication.user check to the Chat client controller, and added a check to make sure the Socket client service is connected to the server; if not, then connect using the new connect() method. Had to do a hard reset from 0.4.0 due to conflicts when merging and pushing to remote. --- .../client/controllers/chat.client.controller.js | 8 ++++++++ .../client/services/socket.io.client.service.js | 15 +++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/modules/chat/client/controllers/chat.client.controller.js b/modules/chat/client/controllers/chat.client.controller.js index ffb83330ad..615dfd9e75 100644 --- a/modules/chat/client/controllers/chat.client.controller.js +++ b/modules/chat/client/controllers/chat.client.controller.js @@ -6,6 +6,14 @@ angular.module('chat').controller('ChatController', ['$scope', 'Socket', // Create a messages array $scope.messages = []; + // If user is not signed in then redirect back home + if (!Authentication.user) $location.path('/'); + + // Make sure the Socket is connected + if (!Socket.socket) { + Socket.connect(); + } + // Add an event listener to the 'chatMessage' event Socket.on('chatMessage', function(message) { $scope.messages.unshift(message); diff --git a/modules/core/client/services/socket.io.client.service.js b/modules/core/client/services/socket.io.client.service.js index e66224cf5c..6f47bd6863 100644 --- a/modules/core/client/services/socket.io.client.service.js +++ b/modules/core/client/services/socket.io.client.service.js @@ -3,12 +3,15 @@ // Create the Socket.io wrapper service angular.module('core').service('Socket', ['Authentication', '$state', '$timeout', function(Authentication, $state, $timeout) { - // Connect to the Socket.io server only when authenticated - if (Authentication.user) { - this.socket = io(); - } else { - $state.go('home'); - } + + // Connect to Socket.io server + this.connect = function () { + // Connect only when authenticated + if (Authentication.user) { + this.socket = io(); + } + }; + this.connect(); // Wrap the Socket.io 'on' method this.on = function(eventName, callback) {