//WebSocket .factory('WebsocketService', ['$rootScope', '$timeout', function ($rootScope, $timeout) { var _ws; var _username = ''; var messages = []; var users = []; function onMessage(e) { var data = JSON.parse(decodeURIComponent(e.data)); $rootScope.$apply(function () { if (data.type === 'users') { users = data.message; $rootScope.$broadcast('websocket', 'users', users); return; } messages.splice(0, 0, {user: data.user, message: data.message, date: data.date}); $rootScope.$broadcast('websocket', 'message', messages); }); } return { login: function (url, username) { _username = username; _ws = new WebSocket(url); _ws.onmessage = onMessage; _ws.onopen = function () { _ws.send(encodeURIComponent(JSON.stringify({type: 'change', message: _username}))); }; }, logoff: function () { _ws.close(); _ws = null; _username = ''; users = []; $rootScope.$broadcast('websocket', 'users', users); }, send: function (message) { _ws.send(encodeURIComponent(JSON.stringify({type: 'message', message: message}))); // _ws.onmessage = function (message) { console.log("_ws.onmessage:", message); } } }; }])